【发布时间】:2021-12-02 06:09:57
【问题描述】:
我不明白为什么这段代码会出错。有人可以帮助我吗?我环顾四周,发现了很多关于堆栈溢出的例子,但我不明白最基本的问题。为什么不能将扩展 {} 的 Data 分配给 {}? {} != {} 吗?
function fn<Data extends {}>(data: Data = {}) { }
// ^^^^^^^^^^^^^^^^^
// Type '{}' is not assignable to type 'Data'.
类型“{}”不可分配给类型“数据”。 “{}”可分配给“Data”类型的约束,但“Data”可以用约束“{}”的不同子类型实例化。ts(2322)
【问题讨论】:
-
你为什么要扩展
{}? -
我希望这个函数的用户能够传入任何对象。基本上,它应该防止传入原始值。
-
@JacobWeisenburger 好的。后续问题。为什么需要
data有默认值? -
不完全是您的要求,但是是的,
{} != {}。 -
@Olian04 因为如果没有传递任何值,我希望 data 是一个空对象而不是 undefined。
标签: typescript