TypeScript如何从数组动态生成对应的字符串联合类型?
如何从数组动态生成TypeScript联合类型?
要从给定数组生成对应的联合类型,核心是让TypeScript保留数组元素的字面量类型信息,而非宽泛的string类型,具体步骤如下:
用
as const断言锁定数组元素的字面量类型
给数组添加as const后,TypeScript会将数组推断为只读元组,每个元素的类型会被精确保留为具体的字符串字面量,而非通用的string:const routeList = ['admin/dashboard','admin/users','admin/roles'] as const;通过
typeof和索引访问类型生成联合类型
使用typeof获取数组的类型,再通过[number]索引访问元组的所有元素类型,自动生成联合类型:type RouteList = typeof routeList[number];
此时RouteList的类型就等价于你手动定义的'admin/dashboard' | 'admin/users' | 'admin/roles'。
注意事项
如果数组是运行时动态生成的(比如从API获取、动态拼接元素),TypeScript无法在编译时获取具体的元素字面量,也就无法生成对应的联合类型——因为TypeScript是静态类型系统,仅能处理编译期已知的类型信息。
内容的提问来源于stack exchange,提问作者Patrick Nogueira
相关产品推荐
相关产品推荐

