无法将空对象设置为 Record 类型的参数的默认值

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

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

TS Playground link

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

【讨论】:

以上是关于无法将空对象设置为 Record 类型的参数的默认值的主要内容,如果未能解决你的问题,请参考以下文章