簡體   English   中英

Typescript 擴展為排除工會成員

[英]Typescript extends for excluding union members

考慮以下使用extends來從聯合類型中刪除成員:

type RemoveNames<N, K> = N extends K ? never : N

type Names = 'bill' | 'jane' | 'freddy'    
type Bill = RemoveNames<Names, 'jane' | 'freddy'> // type Bill = 'bill'

在一個相關問題中, N extends K被定義為意味着“N 可分配給 K”,但在這種情況下(從表面上看) N不可分配給K - 只有N的縮小版本可分配給K

在這種情況下如何解釋extends 如果N的成員不在K中,是否會對其進行迭代和“過濾”(?)?

在解析Bill類型時,TypeScript 采用Names聯合類型的每個類型,並解析條件類型N extends K? never: N N extends K? never: N ,然后使用結果構建最終的聯合類型:

  • 'bill'是否擴展'jane' | 'freddy' 'jane' | 'freddy' 否: N extends K? never: N N extends K? never: N給出'bill'
  • 'jane'是否擴展'jane' | 'freddy' 'jane' | 'freddy' 是: N extends K? never: N N extends K? never: N給出never
  • 'freddy'是否擴展了'jane' | 'freddy' 'jane' | 'freddy' 是: N extends K? never: N N extends K? never: N給出never

最后一個類型是這三種類型的聯合'bill' | never | never 'bill' | never | never 'bill' | never | never給出'bill'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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