gpt4 book ai didi

typescript - 通过添加新类型对可区分的联合进行类型检查

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

假设我有以下 typescript 类型:

enum EntityKind {
Foo = 'foo',
Bar = 'bar',
}

type Foo = {
kind: EntityKind.Foo,
foo: string
}

type Bar = {
kind: EntityKind.Bar,
bar: number
}

type Entity = (Foo | Bar) & {
id: string,
name: string
}

我想要的是在我向枚举添加新类型时能够让类型检查器失败。所以我希望的是:

enum EntityKind {
Foo = 'foo',
Bar = 'bar',
Baz = 'baz',
}

我会遇到某种错误,要求我定义一个新类型 Baz 并将其添加到联合中。

这可能吗?

最佳答案

如果你想要错误类型Entity您可以向需要 EntityKind 的交集添加另一种类型扩展EntityUnion['kind'] :

enum EntityKind {
Foo = 'foo',
Bar = 'bar',
}

type Foo = {
kind: EntityKind.Foo,
foo: string
}

type Bar = {
kind: EntityKind.Bar,
bar: number
}
type Check<T, U extends T> = {}

type EntityUnion = Foo | Bar
type Entity = EntityUnion & {
id: string,
name: string
} & Check<EntityUnion['kind'], EntityKind>

关于typescript - 通过添加新类型对可区分的联合进行类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55012973/

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