Javascript 类型为'的参数;T';isn';t可分配给类型为'的参数;编号';
我不明白在我的情况下,Javascript 类型为'的参数;T';isn';t可分配给类型为'的参数;编号';,javascript,typescript,lodash,typescript-generics,Javascript,Typescript,Lodash,Typescript Generics,我不明白在我的情况下,是否是一个数字,为什么它不能分配给number类型的参数?如果我将n的类型更改为number或any(显然),它无论如何都会工作 错误: const dropFoo = <T>(arr: T[], n: T): T[] => { return _.drop(arr, n) }; const drop = dropFoo<number>([1, 2, 3], 1); console.log(drop); 代码: const dropFoo
是否是一个数字,为什么它不能分配给number类型的参数?如果我将n
的类型更改为number
或any
(显然),它无论如何都会工作
错误:
const dropFoo = <T>(arr: T[], n: T): T[] => {
return _.drop(arr, n)
};
const drop = dropFoo<number>([1, 2, 3], 1);
console.log(drop);
代码:
const dropFoo = <T>(arr: T[], n: T): T[] => {
return _.drop(arr, n)
};
const drop = dropFoo<number>([1, 2, 3], 1);
console.log(drop);
const-dropFoo=(arr:T[],n:T):T[]=>{
返回下降(arr,n)
};
常量drop=dropFoo([1,2,3],1);
控制台日志(drop);
因为T
可以是任何东西,而不仅仅是数字<但是,code>drop
希望其第二个参数始终为数字。您必须使用
将其限制为数字,然后泛型就没有任何用处了(它通常不在这里)。您正在为dropFoo
的函数签名中指定n
一种t
而不是Number
。这是一个简单的修正,不是吗?drop
中的第二个参数是索引。这就是n
应该是的吗?如果是这样的话,T
是否可能不是一个数字?答案对此进行了解释(问题略有不同,但解释基本相同)