You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据常量数组内容推导其精确类型,无需重复定义?

实现方式

方式1:使用 as const 断言(TS 3.4+ 推荐)

这是最简单的实现方案,只需在数组末尾加上as const常量断言,TS就会自动将其推导为精确的只读字面量元组类型:

const array = ['a', 'b', 'c'] as const;
// 推导类型为:readonly ["a", "b", "c"]

这种方式得到的元组是只读的,无法修改元素值、也无法执行push/pop等变更数组的操作,适合定义不变的常量集合。

如果需要去掉只读标记,可以通过类型映射移除readonly修饰符:

type Mutable<T> = { -readonly [P in keyof T]: T[P] };
type ArrayType = Mutable<typeof array>;
// 得到类型:["a", "b", "c"]

方式2:使用泛型辅助函数(需要可变元组时使用)

如果你需要直接得到可修改的普通元组类型,可以先定义一个通用的泛型元组构造函数:

const createTuple = <T extends (string | number | boolean)[]>(...args: T) => args;

// 使用时直接传入元素即可
const array = createTuple('a', 'b', 'c');
// 推导类型为:["a", "b", "c"]

这种方式得到的元组和普通数组一样支持修改操作,适合需要后续变更数组内容的场景。

内容的提问来源于stack exchange,提问作者nitrovatter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 04:42:02