[英]How to use filter in TypeScript on different array types
給出的是下面的 function 簽名:
function foo(): string[] | number[]
為什么TS抱怨過濾器的follow function調用?
foo().filter((v) => true);
^^^^^^
Error
此表達式不可調用。 union type '{ (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (謂詞:(值:數字,索引:數字,數組:數字[])=>未知,thisArg?:任何):數字[]; } | {...; }' 有簽名,但這些簽名都不兼容。
當然我可以將它轉換為[]
,但是這里的正確方法是什么? 錯誤信息很難理解? 怎么破譯這個?
示例: 游樂場
可能是因為.filter()
方法的第一個參數是在 TS 中鍵入的,以具有數組中項目的類型。 由於您的 function 基本上是“返回” .filter((v: number)): number[] | filter((v: string)): string[]
.filter((v: number)): number[] | filter((v: string)): string[]
這兩個簽名不兼容。
function foo(): (number|string)[]
出於與此處相同的原因: Typescript: How to map over union array type?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.