在typescript中,管道(|)是什么意思?
在浏览在typescript中,管道(|)是什么意思?,typescript,Typescript,在浏览@ng bootstrap的某些类型脚本代码时,我找到了pipe(|)操作符 export declare const NGB_PRECOMPILE: (typeof NgbAlert | typeof NgbTooltipWindow)[]; pipe(|)操作符在typescript中的用途是什么?这在typescript中被称为 联合类型描述的值可以是多种类型之一 管道(|)用于分隔每种类型,因此,例如数字|字符串|布尔值是值的类型,可以是数字、字符串或布尔值 let someth
@ng bootstrap
的某些类型脚本代码时,我找到了pipe(|
)操作符
export declare const NGB_PRECOMPILE: (typeof NgbAlert | typeof NgbTooltipWindow)[];
pipe(|
)操作符在typescript中的用途是什么?这在typescript中被称为
联合类型描述的值可以是多种类型之一
管道(|
)用于分隔每种类型,因此,例如数字|字符串|布尔值
是值的类型,可以是数字
、字符串或布尔值
let something: number | string | boolean;
something = 1; // ok
something = '1'; // ok
something = true; // ok
something = {}; // Error: Type '{}' is not assignable to type 'string | number | boolean'
下面是一个类似于问题中的例子:
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
x
是一个数组,其中包含管道表示“或”的Test1
或Test2
的构造函数。因此,在本文中,它表示允许声明的任何一种类型。可能很容易理解具有基元类型的并集:
let x: (string | number);
x = 1; //ok
x = 'myString'; //ok
x = true; //compilation error for a boolean
在JS中,双管道是逻辑OR,单管道是位运算符OR。此外,它似乎只适用于原语,因为当两种类型都是具有不同属性的接口时,它会合并(并集)它们,并抱怨它们的属性都不匹配。这对原语不起作用,因为我不能将一个对象与
布尔值
或其他东西合并。因此,给定某物
,我如何知道它当前持有哪种特定类型的对象?我希望这个答案也能回答这个问题。@Nawaz你可以使用类型保护。对于原语,它可以是typeof
,对于类instanceof
。也可以是用户定义的类型guard。视具体情况而定。这里的更多信息看起来工会手册链接现在已被弃用,而“转到新页面”按钮在任何地方都没有用处。你可能想把它改成