gpt4 book ai didi

typescript 泛型分配空对象

转载 作者:搜寻专家 更新时间:2023-10-30 21:14:10 24 4
gpt4 key购买 nike

这是我想要实现的:

interface IFoo { ... }
function extendWithFoo<T extends {}>(x: T = {}): T & IFoo {
...
}

我收到错误 TS2322:类型“{}”不可分配给类型“T”。

有办法吗?

最佳答案

你可以这样做:

function extendWithFoo<T extends {}>(x: T = {} as T): T & IFoo {
...
}

但是使用空对象是有问题的,因为它接受一切:

extendWithFoo(3); // ok
extendWithFoo("string"); // ok
extendWithFoo(true); // ok
extendWithFoo({}); // ok
extendWithFoo({ key: "value" }); // ok
extendWithFoo(new Array()); // ok

所以我的建议是使用更具体的东西。
无论如何,你并不真的需要它,你可以:

function extendWithFoo<T>(x: T = {} as T): T & IFoo {
...
}

这给了你同样的东西。

关于 typescript 泛型分配空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40239257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com