我有这个对象:
const properties = [
{ value: "entire_place", label: "The entire place" },
{ value: "private_room", label: "A private room" },
{ value: "shared_room", label: "A shared room" },
] as const;
我需要和佐德一起使用它
1.在后端验证和解析我的数据
1.使用这些可能的值"entire_place" | "shared_room" | "private_room"
创建类型脚本联合类型
根据zod文档**,我可以这样做:
const properties = [
{ value: "entire_place", label: "The entire place" },
{ value: "private_room", label: "A private room" },
{ value: "shared_room", label: "A shared room" },
] as const;
const VALUES = ["entire_place", "private_room", "shared_room"] as const;
const Property = z.enum(VALUES);
type Property = z.infer<typeof Property>;
然而,我不想定义我的数据两次,一次使用标签(标签用于用户界面),另一次没有标签。
我只想使用properties
对象定义它一次,而不使用VALUES
数组,然后使用它创建一个zod对象并从zod对象推断类型。
怎么解决?
1条答案
按热度按时间piah890a1#
在这种情况下,我想我会直接从
properties
中推断出Property
的类型,这样就可以避免重复使用如下代码: