Jary8佳瑞网

文章JavaScriptsatisfies 解决了什么问题

satisfies 解决了什么问题

satisfies 既保留字面量推断,又能校验结构。本文用配置表与路由表两个例子,比较注解、as const 和 satisfies 的差异。

本文目录 / Contents
  1. 01注解会丢失字面量
  2. 02satisfies 保留推断
  3. 03与 as const 的边界

注解会丢失字面量

给配置对象加类型注解很自然,但注解会把推断结果拓宽成声明类型,后续就取不到具体的键和字面量值。

type Route = { path: string; label: string };
const routes: Route[] = [
  { path: '/', label: '首页' },
];
// routes[0].label 的类型是 string

satisfies 保留推断

satisfies 在检查结构的同时保留原始推断:

const routes = [
  { path: '/', label: '首页' },
] satisfies Route[];

此时数组元素仍然保留具体的字面量类型,编辑器能给出更准确的提示。

与 as const 的边界

as const 解决的是只读和字面量收窄,不做结构校验;satisfies 负责校验,不改变运行时代码。两者可以组合使用,但不要用 as 绕过真正的类型错误。

  • 配置表优先用 satisfies
  • 需要只读字面量时再加 as const
  • 类型错误应该在构建时报出来,而不是运行时

搜索站点内容

输入关键词后按结果列表浏览,按 Esc 关闭。

输入关键词,搜索文章与项目。支持中文。

Enter 打开结果Esc 关闭/ 或 ⌘K 唤起索引本地索引 · Pagefind