作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我定义了一个枚举来阐明 API 请求状态:
const enum Errcode{
Ok=0,
Error=1,
AccessDeny=201,
PostsNotFound=202,
TagNotFound=203,
//...
}
type SuccessErrcode =Errcode.Ok;
type NotFoundError =Errcode.PostsNotFound|Errcode.TagNotFound;
type ErrorErrcode=/* there */;
我如何定义 ErrorErrcode
表示除 Errcode.Ok 之外的所有 Errcode 项目(并且它应该包括 NotFoundError 的所有项目)?
我无法定义更细粒度的类型和 Union他们喜欢这样:
enum SuccessErrcode {
Ok =0,
}
enum NotFoundErrcode {
PostsNotFound=202,
TagNotFound=203,
}
enum ErrorErrcode {
Error=1,
}
type Errcode =SuccessErrcode|NotFoundError|SuccessErrcode;
如果我这样做,我将无法使用 Errcode.xxx
- 要使用代码,我必须知道它的分配位置。(例如来自 Errcode.TagNotFound
到 NotFoundError.TagNotFound
)。考虑一下 - 当有 TagErrcode
和 NotFoundErrcode
时,TagNotFound=203
将被定义两次。
最佳答案
从 TypeScript 2.8 开始,添加了条件类型,您可以使用内置的 Exclude
来排除某些枚举值:
const enum Errcode {
Ok=0,
Error=1,
AccessDeny=201,
PostsNotFound=202,
TagNotFound=203,
//...
}
type SuccessErrcode = Errcode.Ok;
type NotFoundError = Errcode.PostsNotFound|Errcode.TagNotFound;
type ErrorErrcode = Exclude<Errcode, Errcode.Ok>;
关于TypeScript - 如何从 TypeScript 的枚举中省略某些项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48850720/
我是一名优秀的程序员,十分优秀!