如果我有一个类似的枚举
enum Fruit {
Apple = 'apple',
Orange = 'orange',
}
如何使用
io-ts
类型解析这些值?
import * as t from 'io-ts';
const FruitCodec = new t.Type<Fruit, Fruit, unknown>(/* ... */);
其他库(例如 zod 的
nativeEnum
)拥有对此功能的第一方支持,但是如果我使用 io-ts
,我该怎么办?
我以前遇到过这个问题,过去我用
union
或keyof
解决了它:
const FruitCodec = t.union([
t.literal(Fruit.Apple),
t.literal(Fruit.Orange),
]);
// or
const FruitCodec2 = t.keyof({
[Fruit.Apple]: null,
[Fruit.Orange]: null,
});
虽然这些方法有效,但感觉很冗长。使用
Object.values
的生成方法可能有效,但需要类型断言。希望其他人有更优雅的解决方案。