面试题答案
一键面试function isNumberArray(arr: unknown): arr is number[] {
return Array.isArray(arr) && arr.every((element) => typeof element === 'number');
}
类型守卫在这个函数中的作用
- 类型缩小:函数
isNumberArray
的返回类型arr is number[]
是一个类型守卫。它能够在函数调用处缩小arr
的类型。当调用isNumberArray
并返回true
时,TypeScript会知道arr
是number[]
类型,而不是最初的unknown
类型。这样在后续代码中使用arr
时,TypeScript编译器就能基于这个缩小后的类型进行更准确的类型检查。 - 增强类型安全性:通过类型守卫,我们可以确保在使用
arr
时,它具有我们预期的结构和类型,避免了运行时因类型不匹配而导致的错误,提高了代码的健壮性。