带有 thisArg 的 Typescript 和 Array.map 导致错误

Typescript and Array.map with thisArg results in an error

在 Javascript 中,我可以将 thisArg 作为第二个参数传递给 Array.map 函数。这是一个最小的例子。

const a = [1,2,3,4,5,6];
a.map(function(e) { this.sum += e; return this.sum; }, {sum: 0});

结果是数组[1, 3, 6, 10, 15, 21]。当我在 Typescript 中尝试相同的操作时,出现以下错误。

'this' implicitly has type 'any' because it does not have a type annotation. ts(2683)

我如何注释代码以便 this 回调中的类型正确?

我试过像这样给所有东西一个类型注释,

const a: number[] = [1,2,3,4,5,6];
const S: {sum: number} = {sum: 0};
a.map(function(e: number): number { this.sum += e; return this.sum; }, S);

但这并没有消除错误,因为这些注释中的 none 明确指定了 this 的类型。

您可以使用您的类型覆盖映射函数的 this 参数:

a.map(function(this: {sum: number}, e: number): number { this.sum += e; return this.sum; }, S);

https://www.typescriptlang.org/docs/handbook/2/functions.html#declaring-this-in-a-function

PS:在 .

上有人提出了非常相似的问题