我得到了枚举
enum Status {
Cancelled = 'cancelled',
Completed = 'completed',
Created = 'created'
}
并且我只想使用 Completed 和 Created 值创建另一个枚举
enum StatusMinimal {
Completed = 'completed',
Created = 'created'
}
我尝试使用 Omit,但它仅适用于类型。甚至可以用打字稿来做吗?
答案 0 :(得分:3)
您可以根据 Status
和 Exclude
不需要的值定义属性/参数
function test(s: Exclude<Status, Status.Cancelled>): void {}
test(Status.Completed)
test(Status.Created)
test(Status.Cancelled) // not assignable
答案 1 :(得分:1)
据我所知,没有简单的方法。 请参阅此similiar question。
我将从 Minimal 开始,并从最小实现扩展 Status 枚举。 (我知道,不是你要求的)
答案 2 :(得分:-1)
这类似于this question。 您基本上可以使用内置的 TypeScript 实用程序类型 Exclude。
或者你可以这样做:
enum StatusMinimal {
Completed = 'completed',
Created = 'created'
}
enum StatusExtended {
Completed = 'completed',
Created = 'created'
}
type Status = StatusMinimal | StatusExtended;