枚举类型
枚举类型是 TypeScript 相较于 JavaScript 而言特有的部分。一个简单的枚举声明如下:
enum HTTPStatus {OK,NOT_FOUND,INTERNAL_STATUS_ERROR,
}
与编译成 JavaScript 的代码相比较:
显然 TypeScript 非常的简洁。
尝试使用上述枚举类型:
function processHTTPStatus(s: HTTPStatus) {if(s === HTTPStatus.OK) {console.log("good response")} else {console.log("bad response")}console.log(s)
}processHTTPStatus(HTTPStatus.OK)
发现输出是:
[LOG]: "good response"
[LOG]: 0
原因是 enum 类型当中的值按照给定的顺序从 0、1、2 开始编排。我们可以显式地为枚举类型赋值:
enum HTTPStatus {OK = 200,NOT_FOUND = 404,INTERNAL_STATUS_ERROR = 500,
}
另外一个要解决的问题是,我们如何通过 500 来反推出 INTERNAL_STATUS_ERROR 呢?方法也非常的简单,类似于字典的查找:
function processHTTPStatus(s: HTTPStatus) {console.log(HTTPStatus[s]) // <-- 类似于字典的查找来反推枚举类型
}processHTTPStatus(HTTPStatus.INTERNAL_STATUS_ERROR)
输出为:
[LOG]: "INTERNAL_STATUS_ERROR"