MST

星途 面试题库

面试题:TypeScript函数重载与类型注解的结合应用

请编写一个TypeScript函数 `printValue`,它可以接收字符串、数字或布尔值作为参数,并根据传入参数类型进行不同的打印操作。需要使用函数重载来实现,同时详细说明在每个重载定义中类型注解的作用及相互关系。
18.5万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

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

类型注解作用及相互关系

  1. 重载定义
    • function printValue(value: string): void;:此重载定义表示函数printValue可以接受一个字符串类型的参数,返回值类型为void。这里的类型注解string明确了参数的类型,告知调用者只能传入字符串类型的数据。
    • function printValue(value: number): void;:此重载定义表示函数可以接受一个数字类型的参数,返回值类型为void。类型注解number限制参数必须为数字类型。
    • function printValue(value: boolean): void;:此重载定义表示函数可以接受一个布尔类型的参数,返回值类型为void。类型注解boolean规定参数只能是布尔类型。
  2. 实现定义
    • function printValue(value: string | number | boolean): void {... }:这里的类型注解string | number | boolean是一个联合类型,表示函数接受的参数可以是字符串、数字或布尔值中的任意一种类型。它综合了前面三个重载定义中参数类型,使得函数实现能够处理这三种类型的参数。在函数实现内部,通过typeof操作符来判断实际传入参数的具体类型,并执行相应的打印操作。每个重载定义的类型注解是对具体单一类型的约束,而实现定义中的联合类型注解是对所有可能传入类型的汇总,它们共同协作,确保函数在类型安全的前提下,能够根据不同类型参数执行不同操作。