TS 有哪些数据类型?
答:
TS 在 JS 基础上扩展了类型系统,常用类型如下:
数组
方式一:元素类型后面接上 []
let arr: string[] = ['12', '23']
arr = ['45', '56']
方式二:使用数组泛型,Array<元素类型>
let arr: Array<number> = [1, 2]
arr = [4, 5] as Array<number>
元组 (tuple)
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
let tupleArr: [number, string, boolean]
tupleArr = [12, '34', true] // ok
tupleArr = [12, '34'] // no ok
赋值的类型、位置、个数需要和定义(声明)的类型、位置、个数一致。
枚举 (enum)
enum 是对 JavaScript 标准数据类型的一个补充,使用枚举类型可以为一组数值赋予友好的名字。
enum Color { Red, Green, Blue }
let c: Color = Color.Green
never
never 是其他类型(包括 null 和 undefined)的子类型,可以赋值给任何类型,代表从不会出现的值。
但是没有类型是 never 的子类型,这意味着声明 never 的变量只能被 never 类型所赋值。
never 类型一般用来指定那些总是会抛出异常、无限循环的函数返回值。返回 never 的函数必须存在无法到达的终点。
let a: never
// a = 123 // 错误的写法
a = (() => { // 正确的写法
throw new Error('错误')
})()
function error(message: string): never {
throw new Error(message)
}
其他常用类型
- 基础类型:
string、number、boolean、null、undefined、symbol、bigint、object。 - 特殊类型:
any(关闭类型检查)、unknown(类型安全的 top type)、void(无返回值)、never(不可达)。 - 高级类型:
interface、type alias、union (A | B)、intersection (A & B)、字面量类型、泛型。
来源整理自:vue3js.cn 面试官系列



