在 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 中引用数据类型
TypeScript:预期类型来自在“IntrinsicAttributes & Prop”上声明的属性“children”