gpt4 book ai didi

TypeScript - 如何从 TypeScript 的枚举中省略某些项目?

转载 作者:搜寻专家 更新时间:2023-10-30 20:32:36 25 4
gpt4 key购买 nike

我定义了一个枚举来阐明 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.TagNotFoundNotFoundError.TagNotFound)。考虑一下 - 当有 TagErrcodeNotFoundErrcode 时,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 Playground

关于TypeScript - 如何从 TypeScript 的枚举中省略某些项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48850720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com