typescript - 我可以让枚举引用文本字符串吗?

标签 typescript

我知道我可以有一个像这样的枚举:

enum TShirtSize {
  Small = 3,
  Medium = 5,
  Large = 8
}

var mySize = TShirtSize.Large;

但是有什么方法可以指定文本字符串而不是数字 3,5 和 8 吗?

最佳答案

您可以创建一个可用于纯字符串枚举的类。演示:

class Enum {
    constructor(private value: string) { }
    /** For equality == with string */
    toString() {return this.value }
    /** For send to server serialization */
    toJSON() {return this.value }
}

class Foo extends Enum {    
    static First = new Foo('First')
}

// From server to browser
var recievedDTO: { something: Foo } = <any>{
    something: 'First'
}
console.log(recievedDTO.something == Foo.First); // true

// To server 
var sendDTO = {
    something: Foo.First,
}
console.log(JSON.stringify(sendDTO) == '{"something":"First"}'); // true

// Warning: don't use `===`
console.log(recievedDTO.something === Foo.First); // false 

关于typescript - 我可以让枚举引用文本字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25820171/

相关文章:

javascript - 单例比 TypeScript 中的模块有优势吗?

javascript - Angular 7 : passing parameters to other component error

angular - 将 Angular 添加到窗口类型定义

javascript - TypeScript 2.4.1 -> fontWeight -> 类型 'number' 不可分配给类型 '"inherit"| 400 |

typescript - 在 VSCode Typescript 构建任务中设置 --verbose 选项

typescript : require statement not part of an import statement

javascript - 在 tsc TypeScript 编译中包含 CSS 文件

node.js - 如何使用 npm 命令编译 typescript ?

javascript - 在 Angular 8 中每次点击时始终仅显示三个级别的 Highcharts Sunburst

javascript - 使用 TypeScript 在 JavaScript 中关闭真正的私有(private)字段