TypeScript 联合类型学习笔记
在 TypeScript 中,我们可以使用联合类型来表示一个值可能拥有的多个类型中的一个。联合类型使用管道符 |
来分隔每个可能的类型。例如,如果一个变量可以是字符串或者数字类型,可以这样声明:
typescriptCopy Codelet myVariable: string | number;
下面是一个使用联合类型的实例:
typescriptCopy Codefunction printId(id: number | string) {
console.log(`ID is: ${id}`);
}
printId(101); // 输出 "ID is: 101"
printId("202"); // 输出 "ID is: 202"
在上述代码中,printId
函数的参数类型为 number | string
,即可以接受数字类型的参数,也可以接受字符串类型的参数。调用该函数时,传入的参数类型必须符合定义的联合类型。
除了基本类型外,联合类型还可以用于自定义类型和接口类型。例如:
typescriptCopy Codeinterface Bird {
fly: () => void;
layEggs: () => void;
}
interface Fish {
swim: () => void;
layEggs: () => void;
}
// 可以是鸟或者鱼
type Pet = Bird | Fish;
function getPet(pet: Pet) {
pet.layEggs();
// 需要使用类型保护来判断是鸟还是鱼
if ("fly" in pet) {
pet.fly();
} else {
pet.swim();
}
}
在上述代码中,Pet
类型是一个联合类型,可以接受 Bird
或 Fish
类型的变量。在函数 getPet
中,我们使用了类型保护来判断传入的 Pet
是鸟还是鱼,并调用相应的方法。
总之,联合类型是 TypeScript 中非常有用的类型之一,在类型不确定或者需要支持多种类型的场景下都非常方便。