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

TypeScript如何从数组动态生成对应的字符串联合类型?

如何从数组动态生成TypeScript联合类型?

要从给定数组生成对应的联合类型,核心是让TypeScript保留数组元素的字面量类型信息,而非宽泛的string类型,具体步骤如下:

  1. 用as const断言锁定数组元素的字面量类型
    给数组添加as const后,TypeScript会将数组推断为只读元组,每个元素的类型会被精确保留为具体的字符串字面量,而非通用的string:

    const routeList = ['admin/dashboard','admin/users','admin/roles'] as const;
    
  2. 通过typeof和索引访问类型生成联合类型
    使用typeof获取数组的类型,再通过[number]索引访问元组的所有元素类型,自动生成联合类型:

    type RouteList = typeof routeList[number];
    

此时RouteList的类型就等价于你手动定义的'admin/dashboard' | 'admin/users' | 'admin/roles'。

注意事项

如果数组是运行时动态生成的(比如从API获取、动态拼接元素),TypeScript无法在编译时获取具体的元素字面量,也就无法生成对应的联合类型——因为TypeScript是静态类型系统,仅能处理编译期已知的类型信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:55:21