浏览 74
扫码
在Typescript中,联合类型(Union Types)是指可以取多个不同类型之一的值。使用联合类型可以定义一个变量可以为多种类型中的一种,这样可以增加代码的灵活性和可读性。
定义一个联合类型的变量,可以通过使用竖线(|)将多种类型列在一起:
let myVar: number | string;
上面的示例中,myVar
可以是一个数字或者一个字符串。
可以通过类型保护(Type Guards)来确定一个联合类型的变量的具体类型。Typescript提供了几种类型保护的方式,比如类型谓词、类型断言、typeof操作符等。
function isNumber(value: number | string): value is number {
return typeof value === 'number';
}
let myVar: number | string = 123;
if (isNumber(myVar)) {
console.log('myVar is a number');
} else {
console.log('myVar is a string');
}
除了基本类型之外,还可以定义联合类型的自定义类型:
interface Dog {
kind: 'dog';
bark(): void;
}
interface Cat {
kind: 'cat';
meow(): void;
}
type Pet = Dog | Cat;
function playWithPet(pet: Pet) {
if (pet.kind === 'dog') {
pet.bark();
} else {
pet.meow();
}
}
上面的示例中,Pet
类型是 Dog
和 Cat
的联合类型,通过 kind
字段来进行类型保护判断。
总结一下,联合类型是Typescript中一种非常有用的高级特性,可以增加代码的灵活性和可读性。通过合理使用类型保护,可以更好地处理联合类型的变量。