MST

星途 面试题库

面试题:TypeScript类型收缩在函数重载中的应用

假设有一个函数`printValue`,它接收不同类型的参数(如字符串、数字、布尔值),并根据参数类型做不同的打印操作。请使用函数重载结合类型收缩的知识来实现这个`printValue`函数,并解释在这个过程中类型收缩是如何起作用的。
14.6万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function printValue(value: string): void;
function printValue(value: number): void;
function printValue(value: boolean): void;
function printValue(value: string | number | boolean) {
    if (typeof value ==='string') {
        console.log(`字符串: ${value}`);
    } else if (typeof value === 'number') {
        console.log(`数字: ${value}`);
    } else if (typeof value === 'boolean') {
        console.log(`布尔值: ${value}`);
    }
}

// 类型收缩解释:
// 在函数内部通过typeof进行类型判断,当使用`if (typeof value ==='string')`时,TypeScript能够识别出此时`value`的类型已经收缩为`string`,
// 这样在这个代码块内就可以安全地使用`string`类型相关的属性和方法。同理,在`if (typeof value === 'number')`和`if (typeof value === 'boolean')`
// 代码块内,`value`的类型分别收缩为`number`和`boolean`,使得类型更加精确,从而可以进行针对性的操作而避免类型错误。