MST

星途 面试题库

面试题:TypeScript中boolean类型在类型保护和类型断言的综合运用

假设有一个联合类型`let value: string | boolean;`,请通过类型保护和类型断言的方式,实现一个函数`printValue`,如果`value`是`boolean`类型,打印其值;如果是`string`类型,打印其长度。阐述类型保护和类型断言在处理这种情况时各自的作用和使用场景。
38.4万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function printValue(value: string | boolean) {
    if (typeof value === 'boolean') {
        console.log(value);
    } else {
        console.log(value.length);
    }
}

// 类型保护
// 作用:在运行时根据条件检查来缩小联合类型的范围,从而让TypeScript知道在某个代码块内变量的具体类型,提高类型安全性。
// 使用场景:当需要根据不同类型执行不同逻辑,且可以通过某些运行时检查(如typeof、instanceof等)来区分类型时使用。

// 类型断言
// 作用:告诉TypeScript编译器,某个变量是什么类型,绕过编译器的类型检查,强制指定类型。
// 使用场景:当开发者比TypeScript编译器更明确变量的实际类型时使用。例如,已经通过其他方式确认了变量的类型,但编译器无法自动推断时。

// 如果要使用类型断言实现printValue函数
function printValueWithAssertion(value: string | boolean) {
    if ((value as boolean).toString) {
        console.log((value as string).length);
    } else {
        console.log(value as boolean);
    }
}