MST

星途 面试题库

面试题:TypeScript中如何实现一个简单的自定义类型保护

请用TypeScript编写一个函数,该函数能够通过自定义类型保护来区分一个联合类型`string | number`,当输入为字符串时返回`true`,输入为数字时返回`false`,并说明类型保护在这种场景下的作用。
40.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function isString(value: string | number): value is string {
    return typeof value ==='string';
}

// 类型保护在这种场景下的作用:
// 1. 在函数调用处,通过类型保护函数 `isString`,TypeScript 编译器能够根据返回值,
//    缩小联合类型 `string | number` 的范围。如果 `isString` 返回 `true`,则在后续代码中,
//    编译器会认为该值的类型为 `string`;如果返回 `false`,则认为该值类型为 `number`。
// 2. 这有助于在编写代码时进行更准确的类型检查,避免类型错误,提高代码的安全性和可维护性。
// 3. 例如:
let val: string | number = "hello";
if (isString(val)) {
    console.log(val.length); // 此时编译器知道 `val` 是 `string` 类型,可安全访问 `length` 属性
} else {
    console.log(val.toFixed(2)); // 此时编译器知道 `val` 是 `number` 类型,可安全访问 `toFixed` 方法
}