TypeScript:Array.reduce VS Code中的函数报告错误

时间:2017-12-19 10:41:05

标签: javascript typescript webstorm

TypeScript:$cacheItem->isHit() // true VS代码中的函数报告错误,但在WebStorm中是正常的。

这是VS Code中的内容:

VS Code

报告

  

Type String未分配给Type String []

这就是WebStorm中的现状:

WebStorm

虽然没有问题,但没有显示回调注释,例如上面的Array.reducemap

之前的代码是:

filter

我不知道问题是在我的代码还是TypeScript编译器中。

1 个答案:

答案 0 :(得分:0)

如果您使用undefined,则所选的重载将是

reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;

期望结果与数组的项目类型相同。

您应该在初始值(undefined)上使用类型断言,让编译器知道结果类型为string或指定reduce的类型参数

.reduce((prev, curv, index, array) => curv[1], <string>undefined);
.reduce<string>((prev, curv, index, array) => curv[1], undefined)

如果这样做,所选的重载将是

reduce<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U;