正如标题所说,类型推断正确(见下图),但我仍然收到 TS 错误,抱怨 any
类型。完整代码在图片下方。
这是编辑器还是 TypeScript 的问题?也许还有其他我没有考虑过的东西?谢谢。
export function createArrayCycle<T>(array: T[]): <U>(func?: (arg: T) => U) => T {
let cycleCount = 0;
return function cycle<U>(func): T | U {
if (cycleCount === array.length) {
cycleCount = 0;
}
if (func) {
return func(array[cycleCount++]);
}
return array[cycleCount++];
};
}
答案 0 :(得分:0)
这是编译器错误;您必须在 "noImplicitAny"
中启用 tsconfig.json
(或将 "strict"
设置为 true
)。如果编译器不能从用法推断参数类型,它会回退到 any
类型;启用 "noImplicitAny"
后,它会在推断出 any
: https://www.typescriptlang.org/tsconfig#noImplicitAny 时报告错误。
您需要禁用此选项以使编译器容忍参数而不声明其类型或显式指定参数类型