此代码导致错误,其文本如下:
function getHandler(handlers: number[] | string[]): any {
return handlers.map(handler => handler);
}
Run Code Online (Sandbox Code Playgroud)
错误文本:
错误 TS2349:无法调用类型缺少调用签名的表达式。类型 '{ (this: [string, string, string, string, string], callbackfn: (value: string, index: number, ...' 没有兼容的调用签名。
更改number[] | string[]为(number|string)[]
function getHandler(handlers: (number | string)[]): any {
return handlers.map(handler=>handler);
}
Run Code Online (Sandbox Code Playgroud)
该问题的较小重现:
const handlers: string[] | number[] = [];
handlers.map(x => x);
Run Code Online (Sandbox Code Playgroud)
原因:仅仅是因为类型系统无法从string[]|number[]该项目中找出x可能是string|number. 难点在于,它总是要么string或要么number并不真正string|number同时。
如果你希望它得到支持,你可能想在这里提出它:https : //github.com/Microsoft/TypeScript/issues
| 归档时间: |
|
| 查看次数: |
522 次 |
| 最近记录: |