Hvorfor legge til en foregående vertikal strek (|) til en unionstype-literal i TypeScript?


Jeg skrev følgende TypeScript-kode:

type FeatureFlagConfig = { enabled: false }
  | {
      enabled: true;
      key: string;
    };

Deretter, i VSCode, ble det ved lagring automatisk formatert til:

type FeatureFlagConfig =
  | { enabled: false }
  | {
      enabled: true;
      key: string;
    };

Det som er interessant her er at union-litteralen har syntaksen | a | b i stedet for a | b. Å legge til den innledende | (vertikale streken) ser ut som ødelagt kode, men er tydeligvis hva linteren foretrekker. Hvorfor? Er dette utelukkende for formateringsformål, slik at hvert union-medlem havner på sin egen linje? Er dette også gyldig TS? TS-spesifikasjonen nevner det ikke: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#386-union-type-literals

Svar #1

Selv om denne syntaksen ikke nevnes i spesifikasjonen, støtter Typescript den: https://github.com/microsoft/TypeScript/issues/12071

Det er valgfritt å inkludere et ledende | (eller &) tegn i stedet for bare å bruke disse tegnene for å skille alternativer i en typeunion/-skjæring. Hensikten er utelukkende å gi større fleksibilitet i kodeformatering. Denne syntaksen deles med andre språk, f.eks. Flow, F# og ble lagt til i "TypeScript 2.1.3, Community den 28. november 2016".

Relaterte artikler