使用通用函数扩展数组原型

时间:2020-03-23 09:35:27

标签: typescript typescript-generics

我正在尝试向Array原型添加一个简单的泛型函数,但是TypeScript给了我关于我不了解的类型的错误。

interface Array<T> {
    pluck<T, TKey extends keyof T>(this: T[], key: TKey): T[TKey][];
}

Array.prototype.pluck = function pluck<T, TKey extends keyof T>(this: T[], key: TKey): T[TKey][] {
    return this.map(item => item[key]);
}

这是一个Codesandbox:https://codesandbox.io/s/typescript-playground-export-3oww1?fontsize=14&hidenavigation=1&theme=dark

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

在接口或类定义中引用通用参数时,不应在方法中创建一个通用参数。现在,TypeScript正确地指出来自T的{​​{1}}与来自Array<T>的{​​{1}}是不同的。因此,如果您在接口定义中删除一个,则一切正常:

T