基础类型
TypeScript 在 JavaScript 运行时类型的基础上增加静态类型层。许多选项由 tsconfig配置 控制,尤其是 strict 一族开关。
any 与 unknown
any:关闭检查;仅遗留迁移或极少数场景使用。unknown:安全的「顶类型」之一,赋值给谁都须先窄化(见 类型推断与类型守卫)。
null 与 undefined
- 在
strictNullChecks打开时,二者与其它类型不相容(除非在联合里显式写出)。 - 常用可选链
?.、空值合并??配合窄化。
void 与 never
void多用于无意义返回值(undefined);回调返回void时可接受更宽的返回(忽略返回值)的特殊规则。never:底类型,表示「永不出现的值」或穷尽检查中的剩余分支。
原始与对象
booleannumberstringbigintsymbolobject:非原始类型;与大括号{}、Object在可赋值性上差异微妙——约束泛型时常写object或Record<string, unknown>。
数组与元组
let a: number[]
let b: Array<string>
let t: [string, number] // 元组:定长/定序
let r: readonly [number, ...string[]] // 只读与剩余元素只读数组:readonly number[];与可变数组双向赋值规则在 strict 下更严格。
字面量类型
type Easing = 'ease-in' | 'ease-out'
const n = 42 as const // 收窄到字面量 42as const 产生 readonly 深层字面量,常见于与 typeof 配合从常量对象导出类型(对比 枚举)。
模板字面量类型(简例)
type EventName = `on${Capitalize<'click' | 'hover'>}`更深用法见 高级类型。
interface / type 的入口
对象形状主要由 接口与类型别名描述;函数、构造器也可用接口表达。
TypeScript 基础目录索引
| 主题 | 笔记 |
|---|---|
| 对象形状、合并 | 接口与类型别名 |
| 参数化类型 | 泛型 |
类成员、implements | 类 |
窄化、is | 类型推断与类型守卫 |
| 常量集合 | 枚举 |
| 条件类型、工具类型 | 高级类型 |
ESM、namespace | 模块与命名空间 |
| 元数据语法 | 装饰器 |
| 编译选项 | tsconfig配置 |
相关链接
- tsconfig配置(
strict、strictNullChecks) - 接口与类型别名
- 类型推断与类型守卫(
unknown窄化) - 枚举(与字面量联合的替代关系)
- 高级类型(模板字面量、
Record等)