typescript - 从联合类型 typescript 生成字符串数组

标签 typescript typescript-typings

大家好,我正在寻找一种从联合 typescript 类型获取数组的方法
这是一个现有的类型:

 export type GridClassKey =
  | 'root'
  | 'container'
  | 'item'
  | 'zeroMinWidth'
  | 'direction-xs-column'
  | 'direction-xs-column-reverse'
  | 'direction-xs-row-reverse'
  | 'wrap-xs-nowrap'
  | 'wrap-xs-wrap-reverse'
  | 'align-items-xs-center'
  | 'align-items-xs-flex-start'
  | 'align-items-xs-flex-end'
  | 'align-items-xs-baseline'
  | 'align-content-xs-center'
  | 'align-content-xs-flex-start'
  | 'align-content-xs-flex-end'
  | 'align-content-xs-space-between'
  | 'align-content-xs-space-around'
  | 'justify-xs-center'
  | 'justify-xs-flex-end'
  | 'justify-xs-space-between'
  | 'justify-xs-space-around'
  | 'justify-xs-space-evenly'
  | 'spacing-xs-1'
  | 'spacing-xs-2'
  | 'spacing-xs-3'
  | 'spacing-xs-4'
  | 'spacing-xs-5'
  | 'spacing-xs-6'
  | 'spacing-xs-7'
  | 'spacing-xs-8'
  | 'spacing-xs-9'
  | 'spacing-xs-10'
  | 'grid-xs-auto'
  | 'grid-xs-true'
  | 'grid-xs-1'
  | 'grid-xs-2'
  | 'grid-xs-3'
  | 'grid-xs-4'
  | 'grid-xs-5'
  | 'grid-xs-6'
  | 'grid-xs-7'
  | 'grid-xs-8'
  | 'grid-xs-9'
  | 'grid-xs-10'
  | 'grid-xs-11'
  | 'grid-xs-12'
我想以编程方式从中获取一个真正的字符串数组,例如:
['root','container', ...]
是否有可能,因为 GridClassKey 是一种类型而不是值?
谢谢

最佳答案

我们无法从类型创建数组,因为如果类型在运行时不存在,我们无法在运行时组装数组(@Ingo Bürk 的评论)。但我们可以反过来。如果我们有一个 const 数组,我们可以获得它的联合类型。例如-

const gridClassKeys = ['root', 'container'] as const

// "root" | "container"
type GridClassKey = typeof gridClassKeys[number]
Playground
请注意,我们必须使用 const assertions在声明数组时(数组将是只读元组,因此是固定键)

关于typescript - 从联合类型 typescript 生成字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66751035/

相关文章:

javascript - Angular 2/4/Universal - 如何使用 JSON-LD 数据?

json - JS : ERROR SyntaxError: Unexpected token u in JSON at position 0, native 脚本

javascript - 如何使用接口(interface)在 typescript 中添加两个数字

javascript - 如何将 Prop 和功能传递给 react-widow 列表?

typescript-typings - 在公司代理后面安装打字包

javascript - TypeScript - 如果扩展其他内容,则类泛型类型太窄,如果不扩展任何内容则不是

javascript - 生成 typescript 的代码问题(node-fluent-ffmpeg模块)

typescript - typescript 类型定义的版本控制 (@types/)

typescript 打字给我 "index.d.ts is not a module"

typescript - 打字中的环境依赖性和常规依赖性之间有什么区别