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".