【问题标题】:Can't set empty object as default value for param with type Record无法将空对象设置为 Record 类型的参数的默认值
【发布时间】:2021-05-10 13:19:12
【问题描述】:
type SimpleObject = Record<string, any>
<T extends SimpleObject>(param: T = {}) => param
                         ^^^^^^^^^^^^^ 

TS2322:类型“{}”不可分配给类型“T”。 “{}”可分配给“T”类型的约束,但“T”可以用约束“Record”的不同子类型来实例化。

【问题讨论】:

    标签: typescript


    【解决方案1】:

    TypeScript 不知道T 的形状,它可能匹配也可能不匹配{},所以你需要明确告诉你知道{}T,如下所述:

    TS Playground link

    type SimpleObject = Record<string, any>
    <T extends SimpleObject>(param: T = {} as T) => param
    

    【讨论】:

      猜你喜欢
      • 2021-08-14
      • 2021-12-24
      • 2021-09-11
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      相关资源
      最近更新 更多