reactjs - Finnes det en måte i TypeScript å si «Include» (motsatt av Exclude)?
Jeg har en strengunion som ser slik ut: type AlphabetLike='a' | 'b' | 'c' | 'zeta' | 'beta' | 'gamma' | 'mu'; Jeg vil kunne konstruere typen type Alphabet='a' | 'b' | 'c'. Jeg kunne gjort dette ved å bruke Exclude og fjerne zeta, beta, gamma og mu, men det er mange ting å fjerne, og hvis flere verdier legges til i AlphabetLike, endres Alphabet. Jeg vil vite om verdien min fra "AlphabetLike" noen gang blir fjernet fra den typen.
Finnes det en måte å gjøre en Inkluder i stedet for en Ekskluder?
Svar #1
Det finnes en Extract<T, U> nytte-type som fungerer som det motsatte av Exclude<T, U> nytte-type:
type AlphabetLike = 'a' | 'b' | 'c' | 'zeta' | 'beta' | 'gamma' | 'mu';
type Alphabet = Extract<AlphabetLike, 'a' | 'b' | 'c' | 'zzz'>;
// type Alphabet = "a" | "b" | "c"
Merk at ingenting tvinger det andre argumentet (kalt U her) til enten Extract<T, U> eller Exclude<T, U> til å inneholde bare elementer fra det første argumentet (kalt T her). Derfor har 'zzz' ovenfor ingen effekt på noe.
Lenke til kode på lekeplassen
