基础类型

TypeScript 在 JavaScript 运行时类型的基础上增加静态类型层。许多选项由 tsconfig配置 控制,尤其是 strict 一族开关。


anyunknown

  • any:关闭检查;仅遗留迁移或极少数场景使用。
  • unknown:安全的「顶类型」之一,赋值给谁都须先窄化(见 类型推断与类型守卫)。

nullundefined

  • strictNullChecks 打开时,二者与其它类型不相容(除非在联合里显式写出)。
  • 常用可选链 ?.、空值合并 ?? 配合窄化。

voidnever

  • void多用于无意义返回值undefined);回调返回 void 时可接受更宽的返回(忽略返回值)的特殊规则。
  • never底类型,表示「永不出现的值」或穷尽检查中的剩余分支。

原始与对象

  • boolean number string bigint symbol
  • object非原始类型;与大括号 {}Object 在可赋值性上差异微妙——约束泛型时常写 objectRecord<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 // 收窄到字面量 42

as const 产生 readonly 深层字面量,常见于与 typeof 配合从常量对象导出类型(对比 枚举)。


模板字面量类型(简例)

type EventName = `on${Capitalize<'click' | 'hover'>}`

更深用法见 高级类型


interface / type 的入口

对象形状主要由 接口与类型别名描述;函数、构造器也可用接口表达。


TypeScript 基础目录索引

主题笔记
对象形状、合并接口与类型别名
参数化类型泛型
类成员、implements
窄化、is类型推断与类型守卫
常量集合枚举
条件类型、工具类型高级类型
ESM、namespace模块与命名空间
元数据语法装饰器
编译选项tsconfig配置

相关链接