我会保持简短和甜蜜的. 为什么会这样?
type ReadonlyStringArray = readonly string[]
type TEnumGeneric<EnumIsh extends ReadonlyStringArray> = {
type: "enum",
values: EnumIsh
}
type TEnumImplied = {
type: "enum",
values: ReadonlyStringArray
}
type EVal<T extends TEnumImplied> = {
value: T["values"][number]
}
考虑到这一点
const somearr = ["foo", "baz", "bar"] as const
const x: TEnumGeneric<typeof somearr> = {
type: "enum",
values: somearr
}
const z: EVal<typeof x> = {
value: "bar"
}
但也允许这样做吗?
const y: TEnumImplied = {
type: "enum",
values: ["foo", "bar", "baz"] as const
} as const
const z: EVal<typeof y> = {
value: "" //???
}
我假设它只允许y.Values中的一个值,因为TEnumImpled的值是只读的...?