为什么要在打字稿中的联合类型文字中添加前面的竖线(|)?

Pat*_*gan 5 typescript

我编写了以下 TypeScript 代码:

type FeatureFlagConfig = { enabled: false }
  | {
      enabled: true;
      key: string;
    };
Run Code Online (Sandbox Code Playgroud)

然后,在 VSCode 中保存后,它会自动格式化为:

type FeatureFlagConfig =
  | { enabled: false }
  | {
      enabled: true;
      key: string;
    };
Run Code Online (Sandbox Code Playgroud)

这里有趣的是联合文字的语法| a | b而不是a | b. 添加首字母|(竖线)字符看起来像是损坏的代码,但显然是 linter 所喜欢的。为什么?这是否专门用于格式化目的,以便每个工会成员各占一行?另外,这个TS有效吗?TS 规范没有提到它: https: //github.com/Microsoft/TypeScript/blob/master/doc/spec.md#386-union-type-literals

Pat*_*gan 4

尽管规范中没有提及此语法,但 Typescript 确实支持它: https: //github.com/microsoft/TypeScript/issues/12071

可以选择提供前导|(或&)字符,而不是仅使用这些字符来分隔类型并集/交集中的选项。唯一的目的是为代码格式提供更大的灵活性。此语法与其他语言(例如 Flow、F#)共享,并在“TypeScript 2.1.3,2016 年 11 月 28 日社区”中添加。