【问题标题】:Argument of type 'T' isn't assignable to parameter of type 'number'“T”类型的参数不能分配给“数字”类型的参数
【发布时间】:2019-07-27 10:07:08
【问题描述】:

我不明白<T> 在我的情况下是否是一个数字,为​​什么它不能分配给数字类型的参数?如果我将 n 的类型更改为 numberany(显然)它仍然可以工作。

错误:

代码:

const dropFoo = <T>(arr: T[], n: T): T[] => {
  return _.drop(arr, n)
};
const drop = dropFoo<number>([1, 2, 3], 1);
console.log(drop);

【问题讨论】:

  • 您在 dropFoo 的函数签名中为 n 分配了 T 类型,而不是 Number。这是一个简单的修复,不是吗?
  • drop 中的第二个参数是一个索引。 n 应该是这样吗?如果是这样,T 是否有可能不是数字?
  • this question的答案说明了(问题略有不同,但说明基本相同)

标签: javascript typescript lodash typescript-generics


【解决方案1】:

因为T 可以是任何东西,而不仅仅是数字。 drop 但是希望它的第二个参数始终是一个数字。您必须仅使用 &lt;T extends number&gt; 将其限制为数字,然后泛型根本没有用(通常不在这里)。

【讨论】:

    猜你喜欢
    • 2020-08-19
    • 2018-05-08
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多