Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将typescript类型的字符串转换为字符串数组?_Javascript_Typescript_Types - Fatal编程技术网

Javascript 如何将typescript类型的字符串转换为字符串数组?

Javascript 如何将typescript类型的字符串转换为字符串数组?,javascript,typescript,types,Javascript,Typescript,Types,我有这种类型: type myCustomType = "aaa" | "bbb" | "ccc"; 我需要将其转换为如下数组: ["aaa", "bbb", "ccc"] 如何在typescript中执行此操作?您不能使用字符串文字执行此操作,但可以使用枚举执行此操作 enum MyEnum { "aaa", "bbb", "ccc", } Object.keys(MyEnum).forEach(key => { console.log(key); }) 在此处

我有这种类型:

type myCustomType = "aaa" | "bbb" | "ccc";
我需要将其转换为如下数组:

["aaa", "bbb", "ccc"]

如何在typescript中执行此操作?

您不能使用字符串文字执行此操作,但可以使用枚举执行此操作

enum MyEnum {
  "aaa",
  "bbb",
  "ccc",
}

Object.keys(MyEnum).forEach(key => {
  console.log(key);
})


在此处复制:

类型在发出的代码中不存在-不能从类型转到数组

但在某些情况下,你可以反过来。如果数组不是动态的(或者它的值可以在初始化时由类型检查器完全确定),您可以将数组
声明为const
(这样数组的类型是
[“aaa”、“bbb”、“ccc”]
,而不是
字符串[]
),然后通过从
arr[number]映射其值来从中创建类型

const arr = ["aaa", "bbb", "ccc"] as const;
type myCustomType = typeof arr[number];

下面是一个示例。

不可能,类型不在发出的代码中。但是你可以用另一种方法来做——定义数组,然后从中创建一个类型it@T.J.Crowder
const arr=[“aaa”、“bbb”、“ccc”]作为常量;类型arrTypes=类型arr[编号]
@CertainPerformance-Ah…我错过了const的
部分。我认为这是一个很好的答案,我建议发布它。@CertainPerformance OK谢谢你的快速回答。然后我将使用该解决方案-这也可以解决我的场景:)它不提供OP要求的联合类型。您使用的枚举与联合类型有根本不同。此处的[number]是什么意思?它的计算结果为
arr[0]
arr[1]
等的联合
arr[someNumber]
其中
someNumber
是一个数字。它只是TypeScript语法,而不是JS。什么意思是
作为const
部分?@adrisons它防止TypeScript自动将类型扩展为
字符串[]
,而是将其作为
[“aaa”、“bbb”、“ccc”]
的静态元组