我的目标是创建一个函数,以克隆一个数组-并保留类型。使用此代码,typescript将返回类型声明为any:
export function someFn(inputArray) {
return [...inputArray];
}
// result will have any[] as type
const result = someFn([1, 2, 3]);
我怎么能告诉打字稿,返回类型someFn
将与输入相同(即,在这种情况下,是一个数字数组)?
解决方法
我知道我可以使用类型变量来做到这一点:
export function someFn<T>(inputArray): T[] {
return [...inputArray];
}
// result will have number[] as type (but only because I input T as number)
const result = someFn<number>([1, 2, 3]);
我想避免上述解决方法,因为它迫使我事先声明类型。
如果您将自变量键入为任何依赖的参数T
(在下面的示例中T[]
),则将从该自变量推断出泛型,而无需在调用时指定它:
function someFn<T>(inputArray: T[]): T[] {
return [...inputArray];
}
const result = someFn([1, 2, 3]); // `result` will be of type `number[]`
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句