gpt4 book ai didi

typescript - 描述 TypeScript 中输入类型的联合

转载 作者:行者123 更新时间:2023-12-04 08:06:21 24 4
gpt4 key购买 nike

假设我们有一个包装对象:

interface Wrapper<T> {
value: T
}
我想设计一个接收 Wrapper的函数对象作为参数(可能具有不同的 T)并返回其中之一:
function <T extends ReadonlyArray<Wrapper<any>>>(...args: T) { ... }
这种函数的返回类型应该是 Wrapper<(union of input Ts)>。我如何在 Typescript 中描述这种返回类型,而不会丢失输入类型(即不是 Wrapper<any> )?

最佳答案

你走在正确的轨道上。该函数将捕获正确的类型,约束中的 any 用作通配符,any 不会变成 T (根据差异,您可以用 unknownnever 替换它,但通常不值得)
T包含一个包装器数组,您可以使用类型索引查询获取传递给 wrppper 的类型的联合:

function getOne<T extends ReadonlyArray<Wrapper<any>>>(...args: T): Wrapper<T[number]['value']> {
return args[0];
}

let x = getOne({
value: { a: 1}
}, {
value: { b: 1}
})

// let x: Wrapper<{
// a: number;
// } | {
// b: number;
// }>
Playground Link

关于typescript - 描述 TypeScript 中输入类型的联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66204050/

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