TypeScript 联合类型


TypeScript中的联合类型(Union Types)可以用来定义一个类型可以是多个类型中的任意一个的情况。这种概念在JavaScript中也存在,通常使用|来表示。

下面是一个简单的例子:

function printId(id: number | string) {
  console.log("ID is: " + id);
}
printId(101); // Output: ID is: 101
printId("202"); // Output: ID is: 202

在上面的例子中,id参数可以是numberstring类型中的任何一个。这意味着你可以调用printId函数,传入一个数字或者字符串作为参数。

联合类型的使用不仅仅局限于参数的定义,还可以用于变量、返回值类型等等。

let userId: string | null = getUserID();
function getUserID(): string | null {
  // Code to get userID
}

在上面的示例中,userId变量可以存储一个字符串或者null值。同样地,getUserID函数也可以返回一个字符串或者null值。

联合类型对于可以使用多种不同类型的值的变量和函数非常有用。但是需要注意的是,在尝试使用联合类型的变量或函数时,我们必须确保正确地使用它们。

function printUserName(user: { name: string } | null) {
  if (user !== null) {
    console.log(user.name);
  }
}

在上面的例子中,我们定义了一个printUserName函数,它的参数user可以是一个具有name属性的对象或者null值。但是,在函数体内我们需要在执行读取user.name之前先检查user是否为null,否则就会抛出一个运行时错误。

使用联合类型时,我们需要养成良好的编码习惯,遵循TypeScript提供的类型检查规则,确保我们的代码更加健壮。