MST

星途 面试题库

面试题:TypeScript复杂类型报错解读之联合类型

假设有如下TypeScript代码: ```typescript let value: string | number; value = 'hello'; console.log(value.length); ``` 这段代码在编译时会报错,解释报错原因,并给出正确的修改方式。
26.6万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

报错原因

value 的类型是 string | number,这意味着 value 可能是 string 类型也可能是 number 类型。而 number 类型并没有 length 属性,TypeScript 为了确保类型安全,会在编译时报错。

正确修改方式

  1. 类型断言:如果确定 valuestring 类型,可以使用类型断言。
let value: string | number;
value = 'hello';
console.log((value as string).length);
  1. 类型守卫:使用 typeof 进行类型判断。
let value: string | number;
value = 'hello';
if (typeof value ==='string') {
    console.log(value.length);
}