我正在尝试向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
感谢您的帮助:)
答案 0 :(得分:1)
在接口或类定义中引用通用参数时,不应在方法中创建一个通用参数。现在,TypeScript正确地指出来自T
的{{1}}与来自Array<T>
的{{1}}是不同的。因此,如果您在接口定义中删除一个,则一切正常:
T