TypeScript 联合类型学习笔记

在 TypeScript 中,我们可以使用联合类型来表示一个值可能拥有的多个类型中的一个。联合类型使用管道符 | 来分隔每个可能的类型。例如,如果一个变量可以是字符串或者数字类型,可以这样声明:

typescriptCopy Code
let myVariable: string | number;

下面是一个使用联合类型的实例:

typescriptCopy Code
function printId(id: number | string) { console.log(`ID is: ${id}`); } printId(101); // 输出 "ID is: 101" printId("202"); // 输出 "ID is: 202"

在上述代码中,printId 函数的参数类型为 number | string,即可以接受数字类型的参数,也可以接受字符串类型的参数。调用该函数时,传入的参数类型必须符合定义的联合类型。

除了基本类型外,联合类型还可以用于自定义类型和接口类型。例如:

typescriptCopy Code
interface 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 类型是一个联合类型,可以接受 BirdFish 类型的变量。在函数 getPet 中,我们使用了类型保护来判断传入的 Pet 是鸟还是鱼,并调用相应的方法。

总之,联合类型是 TypeScript 中非常有用的类型之一,在类型不确定或者需要支持多种类型的场景下都非常方便。