簡體   English   中英

如何在不同的數組類型上使用 TypeScript 中的過濾器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM