当前位置: 首页 > 知识库问答 >
问题:

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

宇文曦
2024-02-01

我想给一个对象里所有值为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 这个函数如何实现?

共有2个答案

石喜
2024-02-01
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' }
杨凌
2024-02-01
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}
 类似资料:
  • 比方上面的类型,如果我想要 value 的类型在type为 'string' 时为 string ,在 type 为 'number' 的时候为 number。 要怎么定义这两个属性之间的类型约束?

  • 我希望data是否必传由A[T]是否有必传属性决定。如何做呢?

  • 主要内容:TypeScript,JavaScript,TypeScript 类型模板,TypeScript,JavaScript,TypeScript,JavaScript,鸭子类型(Duck Typing)对象是包含一组键值对的实例。 值可以是标量、函数、数组、对象等,如下实例: var object_name = { key1: "value1", // 标量 key2: "value", key3: function() { // 函数 }, key4:["content1", "cont

  • 今天,我意识到让数组像字典一样运行更有意义,这样我就可以通过名称而不是数字索引访问特定元素。我希望能够执行而不是(即使我声明了一个将submitButton映射到请求的索引的枚举)。 这是可行的,但我现在允许一堆欺骗我的代码库,这是很糟糕的。我希望对象知道,只有类型的东西才能放入其中。 我可以用这些字段声明一个类,因为我希望它们的数量在将来可以动态添加,所以下面的操作是不可行的。

  • 我在挣扎。 当扩展一个类时,我可以很容易地向它添加一些新属性。 但是,当我扩展基类时,如果我想向基类的对象(简单对象的属性)添加新属性,该怎么办? 下面是一个带有一些代码的示例。 基类 派生类 现在,正如您可以从行内注释中看到的,这将激怒TypeScript。但这在JavaScript中工作。那么,实现这一目标的正确方法是什么呢?如果没有,问题是在我的代码模式本身吗?什么模式适合这个问题? 也许您

  • 主要内容:创建 Map,实例 - test.ts 文件,实例 - test.js 文件,实例 -test.ts 文件,实例Map 对象保存键值对,并且能够记住键的原始插入顺序。 任何值(对象或者原始值) 都可以作为一个键或一个值。 Map 是 ES6 中引入的一种新的数据结构,可以参考 ES6 Map 与 Set。 创建 Map TypeScript 使用 Map 类型和 new 关键字来创建 Map: 初始化 Map,可以以数组的格式来传入键值对: Map 相关的函数与属性: map.clea