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
是否可能不是一个数字?答案对此进行了解释(问题略有不同,但解释基本相同)