【发布时间】:2020-12-17 11:06:09
【问题描述】:
我正在尝试为 Array 编写扩展方法。每当程序运行代码时,我都会得到Uncaught TypeError: pairs.map(...).flatten is not a function。代码如下所示:
extensions.ts
declare interface Array<T> {
flatten<T>(): T;
}
Array.prototype.flatten = function<T> () : T {
return this.reduce(function (flat: Array<T>, toFlatten: Array<T>) {
return flat.concat(Array.isArray(toFlatten) ? toFlatten.flatten() : toFlatten )
}, []);
}
values.ts
export let pairs: { start: String[], end: String[] }[] = [
{ start: [ ... ], end: [ ... ] }, ...
];
export let items: String[] = pairs.map(pair => pair.start.concat(pair.end)).flatten();
我尝试将Array.prototype.flatten = function<T> () : T { ... 更改为Array.prototype.flatten = <T> () : T => { ... 和pairs.map(pair => pair.start.concat(pair.end)).flatten() 更改为pairs.map(pair => pair.start.concat(pair.end)).flatten<String[]>(),但没有任何效果。
我在这里的某个地方也读到它可能是一个转译问题,所以我将--target 编译器更改为ESNext,但错误仍然出现。
【问题讨论】:
标签: typescript