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”]
的静态元组