如何给TypeScript对象的null属性赋值?

我想给一个对象里所有值为null的属性赋其它值,比如:

interface MyObject {
  id: number;
  name: string | null;
  age?: number | null;
  address?: string | null;
}

const myObj: MyObject = { id: 1, name: null, age: 30 };

// assignDefaults是要实现的方法
const newMyObj = assignDefaults(myObj, {
  name: 'Default Name',
  address: 'New York',
});

console.log(newMyObj); // 输出:{ id: 1, name: 'Default Name', age: 30, address: 'New York' }

有没有大佬知道 assignDefaults 这个函数如何实现?

阅读 807
3 个回答

JavaScript 自带的 Object.assign 就能达到你的要求,又何必自己写一个呢。

snipaste_2024-02-01_23-42-33.png

function assignDefaults(target, ...sources) {
    sources.forEach((source) => {
        Object.keys(source).forEach((key) => {
            if (target[key] === undefined || target[key] === null) {
                target[key] = source[key]
            }
        })
    })

    return target
}
interface MyObject {
    id: number;
    name: string | null;
    age?: number | null;
    address?: string | null;
  }
  
  const myObj: MyObject = { id: 1, name: null, age: 30 };
  
  // assignDefaults是要实现的方法
  const newMyObj = assignDefaults(myObj, {
    name: 'Default Name',
    address: 'New York',
  });

  function assignDefaults(curr, next) {
    Object.keys(next).forEach(k => {
        curr[k] ??= next[k]
    })
    return curr
  }
  
  console.log(newMyObj); // 输出:{ id: 1, name: 'Default Name', age: 30, address: 'New York' }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Microsoft
子站问答
访问
宣传栏