管道(|)在打字稿中的含义是什么?

Job*_*bin 55 typescript

在浏览一些打字稿代码时,@ng-bootstrap我找到了pipe(|)运算符.

export declare const NGB_PRECOMPILE: (typeof NgbAlert | typeof NgbTooltipWindow)[];
Run Code Online (Sandbox Code Playgroud)

|在打字稿中使用pipe()运算符有什么用?

Ale*_* L. 72

这在typescript中称为union类型.

联合类型描述的值可以是几种类型之一.

看看这个例子:

class Test1 {
    public a:string
}
class Test2 {
    public b:string
}
class Test3 {

}

let x: (typeof Test1 | typeof Test2)[];

x = [Test1]; //ok
x = [Test1, Test2]; //ok
x = [Test3]; //compilation error
Run Code Online (Sandbox Code Playgroud)


cha*_*ham 11

在JavaScript中,管道运算符表示'或'.因此,在此上下文中,它表示允许的任何声明类型.也许很容易理解与原始类型的联合:

let x: (string | number);

x = 1; //ok
x = 'myString'; //ok
x = true; //compilation error for a boolean
Run Code Online (Sandbox Code Playgroud)

  • 在JS双管道中是一个逻辑OR,单个管道是一个按位运算符OR. (8认同)
  • 此外,它似乎只适用于原语,因为`thing: One | Two`,其中两种类型都是具有不同属性的接口,它将合并(联合?)它们,并抱怨两者都不匹配彼此的属性。这不适用于原语,因为我不能将一个对象与 `boolean` 或其他东西合并 (3认同)