面试题答案
一键面试使用类型守卫
function getLengthWithTypeGuard(arg: string | number): number {
if (typeof arg === 'string') {
return arg.length;
} else {
return arg.toString().length;
}
}
使用类型断言
function getLengthWithTypeAssertion(arg: string | number): number {
return (arg as string).length || arg.toString().length;
}
特点及优势
- 类型守卫:
- 特点:通过运行时检查来确定类型,是一种基于逻辑判断的方式。
- 优势:可靠性高,在运行时动态确定类型,确保类型安全,适用于复杂的类型判断逻辑。
- 类型断言:
- 特点:告诉编译器“我知道这个值是什么类型”,是一种编译时的操作。
- 优势:简洁直接,在明确知道值的类型时,可以快速处理,减少冗余代码。但如果断言错误,可能导致运行时错误。