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