Javascript 如何在TypeScript中引用回调返回值的类型
我有一个这样的泛型函数Javascript 如何在TypeScript中引用回调返回值的类型,javascript,typescript,vue.js,Javascript,Typescript,Vue.js,我有一个这样的泛型函数 function computedLastOf<T>(cb: () => T[]) : Readonly<Ref<T | undefined>> { return computed(() => { const collection = cb(); return collection[collection.length - 1]; }); } 函数computedLastOf(cb:()=>T[]):
function computedLastOf<T>(cb: () => T[]) : Readonly<Ref<T | undefined>> {
return computed(() => {
const collection = cb();
return collection[collection.length - 1];
});
}
函数computedLastOf(cb:()=>T[]):只读{
返回计算(()=>{
const collection=cb();
返回集合[collection.length-1];
});
}
它是一种宏,为类型为T的集合返回计算(反应)值
但是请注意第一个
。它要求此函数的用户指定类型。如果它不是必需的,如果它是推断出来的,那就好了。此处返回的值将始终是回调返回的集合的子级
有没有一种方法可以让打字推断成这样
谢谢 调用泛型函数时,通常可以省略类型参数,从而推断出它。这种方法有时会失败,但最常见的情况是在更复杂的场景中,推断者没有注意到某些细节,并且推断的类型太宽(有效,但不是预期的)
尝试将其称为
computedLastOf(arg)
而不是使用computedLastOf(arg)
Afaik显式为其指定泛型参数调用泛型函数时,如果忽略它,泛型参数通常已经被推断出来了?换句话说,写computedLastOf(()=>[1,2,3])
应该可以。好的提示,谢谢!它返回的是readonly很可能是computed
的问题,是的。有时,推断者无法处理事情,需要显式类型注释,然而,这通常是少数情况。嗯,正在试验。即使我将函数转换为`function lastOf(cb){const collection=cb();return collection[collection.length-1];`结果是any
,因为现在cb
隐式地any
(激活“noImplicitAny”帮助)。此外,泛型参数也完全消失了。请尝试一下function computedLastOf(cb:()=>T[]){const collection=cb();返回集合[collection.length-1];}