面试题答案
一键面试function square(arg: number | string): number {
let num: number;
if (typeof arg ==='string') {
num = parseInt(arg, 10);
} else {
num = arg;
}
return num * num;
}
类型推断和类型断言的协同工作说明
- 类型推断:在函数定义时,参数
arg
被定义为number | string
类型,TypeScript 会根据函数内不同分支的逻辑进行类型推断。例如在typeof arg ==='string'
分支中,TypeScript 能推断出此时arg
是字符串类型,在另一个分支则推断arg
是数字类型。 - 类型断言:这里虽然没有显式使用类型断言语法(如
as
),但通过typeof
判断后赋值给num
变量的过程,隐式地完成了类型断言。通过typeof
判断,将arg
根据不同类型进行处理并赋值给num
,实际上是断言了arg
在不同分支下的具体类型,从而确保后续操作的类型安全,即能正确计算平方值。