ts中enum成员不能是数字字符串,那么怎么让成员是数字字符串,比如01,10等的enum或者对象,按顺序格式化成数组呢
时间: 2024-10-17 15:06:24 浏览: 35
ts-key-enum:一个TypeScript字符串枚举,用于在使用event.key时进行编译时安全
在TypeScript(TS)中,虽然标准的枚举(enum)成员不能直接指定为数字字符串,如"01", "10",但你可以通过一些技巧绕过这个限制。实际上,你可以创建一个自定义类型的枚举(可以称为“数字字符串枚举”),或者使用联合类型结合数组来实现类似的功能。
**自定义类型枚举示例**:
```typescript
type NumberString = '01' | '10'; // 定义一个只允许01和10的枚举类型
// 类似于枚举,但不是内置的enum类型
enum CustomEnum extends NumberString {
Item1,
Item2
}
function formatArray(enumValues: typeof CustomEnum): string[] {
return Array.from(CustomEnum).map((value) => `${value}`);
}
console.log(formatArray(CustomEnum)); // 输出:['01', '10']
```
**数组或对象格式化示例**:
如果你想按照顺序生成一个数组,你可以创建一个对象,并利用索引来关联数字字符串:
```typescript
const enumWithNumbers: Record<number, string> = {
0: '01',
1: '10'
};
function formatAsArray(): string[] {
return Object.values(enumWithNumbers).sort();
}
console.log(formatAsArray()); // 输出:['01', '10']
```
这两种方法都可以让你按照特定顺序生成包含数字字符串的序列,尽管它们并不是传统意义上的枚举。
阅读全文