枚举TypeScript字符串文字

拉尔夫

有没有办法遍历TypeScript字符串文字的值?

type category = "foo" | "bar" | "baz" | "xyzzy"

for (c in category) {
    // ... do something with each category
}

我目前有这样的事情:

let cat: category = ...

switch (cat) {
    case "foo":
    default:
        process("foo")
        break

    case "bar":
        process("bar")
        break

    case "baz":
        process("baz")
        break

    case "xyzzy":
        process("xyzzy")
        break
}

但我宁愿使用类似

let others: category = []
for (c in category) {      // Iterate over possible category values
    if (c !== "foo") others.push(c)
}

if (others.indexOf(cat) >= 0) {
    process(cat)
} else {
    process("foo")
}
蒿甲醚

使用typescript 2.1和keyof type,可以用另一种方式进行操作-您可以定义具有必要键的对象,并使用以下命令获取所有键的并集类型keyof

let categoryKeys = {foo: '', bar: '', baz: '', xyzzy: ''}; // values do not matter

type category = keyof typeof categoryKeys;

let x: category = 'foo'; // ok
let z: category = 'z'; //  error TS2322: Type '"z"' is not assignable 
                       // to type '"foo" | "bar" | "baz" | "xyzzy"'.

console.log(Object.keys(categoryKeys)); // prints [ 'foo', 'bar', 'baz', 'xyzzy' ]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Typescript中将int转换为枚举字符串

比较字符串与枚举

TS中的字符串枚举和字符串文字类型之间的区别

打字稿:枚举中的字符串文字联合类型

字符串枚举

字符串枚举

如何在TypeScript中将字符串转换为枚举?

如何使TypeScript字符串枚举可用于字符串文字并正确键入推断

如何检查给定的字符串在Typescript中的字符串枚举中是否作为值存在?

迭代字符串枚举

Typescript函数将字符串枚举成员转换为枚举

检查枚举TypeScript中的字符串值

将字符串解析为Typescript枚举

无法从字符串解析奇怪的Typescript字符串枚举

将字符串文字解析为枚举数组

如何缩小字符串文字/字符串枚举值的打字稿数组

TypeScript中的数字枚举允许任何数字,而字符串枚举不允许

如何处理打字稿中具有不同字符串文字的字符串枚举的反向映射?

从联合类型创建TypeScript(字符串)枚举?

如何在TypeScript中将字符串优化为“字符串枚举”?

typescript枚举字符串类型Object.keys的数组

TypeScript字符串枚举中的反向映射

如何在Typescript中将字符串转换为枚举

在TypeScript中按字符串设置枚举类型的变量

字符串的枚举说明

在 TypeScript 中将字符串转换为枚举

如何检查字符串以将其缩小到枚举中的字符串,并让 TypeScript 识别它(节点示例)?

如何在 graphql 中表示字符串枚举(字符串文字联合)?

字符串枚举作为 TypeScript 中的对象索引类型