在 Typescript 上声明类型时泄漏管道的目的是啥

Posted

技术标签:

【中文标题】在 Typescript 上声明类型时泄漏管道的目的是啥【英文标题】:What's the propose of a leading pipe when declaring a type on Typescript在 Typescript 上声明类型时泄漏管道的目的是什么 【发布时间】:2020-04-05 17:10:07 【问题描述】:

使用 Prettiefier 我注意到这个代码块被格式化为包含一个额外的前导管道,请参见以下示例:

// before Prettier
let foo: 
    [k: string]: any
 | boolean;

// after Prettier
const actions:
  | 
      [k: string]: any;
    
  | boolean = true;

注意 Prettier 在类型声明中添加的管道。

这也可以在一行中声明,prettier 保持格式而不添加额外的管道:

const actions:  [k: string]: any  | boolean = true;

我的疑问是为什么要添加这个管道?它在 Typescript 级别有什么改变吗?

【问题讨论】:

这可能是为了更容易地添加和删除替换。此外,看到每个 | 在其自己的缩进行后跟类型会使逻辑一目了然 它只是更好的语法。在函数式语言中非常流行。如果有|作为第一个或没有,它是中立的, 【参考方案1】:

纯粹是风格,没有功能上的区别。

考虑以下几点:

type Foo = Bar
  | Baz
  | Bap

与此相比:

type Foo =
  | Bar
  | Baz
  | Bap

第二个例子干净了很多,很明显|s右边的三个东西就是联合体的组成部分。

显然,在一行上定义所有内容时,您不会添加前导 |

type T = A | B

【讨论】:

以上是关于在 Typescript 上声明类型时泄漏管道的目的是啥的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript系列教程16TypeScript 联合类型

TypeScript:如何在编译时声明固定大小的数组以进行类型检查

TypeScript 管道运算符与字符串一起使用时是啥意思?

有没有办法在声明 angular2 数据模型时在 typescript 中引用数据类型

通过 npm 包共享 TypeScript 类型声明

TypeScript:预期类型来自在“IntrinsicAttributes & Prop”上声明的属性“children”