2017-04-21 58 views
1

此代碼導致錯誤,其文本下面給出的表達式:組合數組類型時出錯?錯誤:無法調用其類型缺少調用簽名

function getHandler(handlers: number[] | string[]): any { 
    return handlers.map(handler => handler); 
} 

錯誤文本:

error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '{ (this: [string, string, string, string, string], callbackfn: (value: string, index: number, ...' has no compatible call signatures.

回答

2

變化number[] | string[](number|string)[]

function getHandler(handlers: (number | string)[]): any { 
    return handlers.map(handler=>handler); 
} 

問題的較小的攝製:

const handlers: string[] | number[] = []; 
handlers.map(x => x); 

原因:只是因爲類型系統無法從string[]|number[]找出項目x可能是string|number。難度是總是或者string或者number而不是真的string|number同時。

如果你想支持,你可能想在這裏提出:https://github.com/Microsoft/TypeScript/issues

+0

'number [] |字符串[]'不是數組? –

相關問題