TypeScript技能使用说明
2026-03-29
新闻来源:网淘吧
围观:11
电脑广告
手机广告
何时使用
用户需要TypeScript专业知识——从基础类型标注到高级泛型。代理处理类型收窄、类型推断、判别式联合类型以及严格模式下的模式。
快速参考
| 主题 | 文件 |
|---|---|
| 泛型模式 | generics.md |
| 实用工具类型 | utility-types.md |
| 声明文件 | declarations.md |
| 从JS迁移 | migration.md |
停止使用any
unknown强迫你在使用前进行类型收窄——any会无声地破坏类型安全- API响应:为其定义类型或使用
unknown,绝不使用any - 当你不知道类型时,那就是
未知,并非任何
类型收窄失败
filter(Boolean)不会进行类型收窄——请使用.filter((x): x is T => Boolean(x))Object.keys(obj)返回string[],而非keyof typeof obj——这是有意为之,因为对象可能包含额外的键Array.isArray()会收窄到any[]——可能需要为元素类型进行断言in操作符会进行类型收窄,但仅当属性在联合类型中恰好出现在一个分支时
字面量类型陷阱
let x = "hello"是string类型——请使用const或as const用于字面量类型- 对象属性会拓宽:
{ status: "ok" }具有status: string— 使用as const或类型注解 - 函数返回类型会拓宽 — 对于字面量返回值需显式注解
推断限制
- 在某些数组方法中回调函数会丢失推断 — 当TypeScript猜测错误时需注解参数
- 泛型函数需要实际使用才能推断 —
fn<T>()无法推断,需传入值或显式注解 - 嵌套泛型常失败 — 用显式类型拆解为多个步骤
可辨识联合
- 为每个变体添加字面量
type或kind字段 — 可实现穷举式switch检查 - 详尽检查:
默认情况:const _never: never = x——若遗漏分支则编译报错 - 勿将可辨识联合与可选属性混用——会破坏类型收窄
satisfies操作符对比类型注解
const x: Type = val会拓宽至Type类型——丢失字面量信息const x = val satisfies Type保留字面量,检查兼容性——推荐用于配置对象
严格空值处理
- 可选链
?.返回undefined而非null——这对期望接收null 的API很重要空值合并运算符仅捕获null/—||捕获所有假值,包括0和""- 非空
!应是最后手段——优先选择类型收窄或提前返回
模块边界
import type用于仅类型导入——运行时会被剥离,避免打包器问题- 重新导出类型:
export type { X }——防止意外的运行时依赖 .d.ts类型扩展:使用declare module并指定确切的模块路径

文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~