👌
Template Literal Typesを知らんかったし、zodで表現する方法もあったらしい
文字列の型定義に部分的な制約を定義したかったけどやり方知らなんだが、あった
Template Literal Typesで
type Food = "Egg" | "Apple" | "Meat";
type Category = `group_${Food}`;
// "group_Egg" | "group_Apple" | "group_Meat"
とか
type Category = `group_${string}`;
// "group_Music" | "group_Book" | "group_foo"
みたいに書ける
zodで表現どうするんやろ?と思ったけど、現状はcustom API で書き換える方法があるぽい
group: z.custom<`group_${string}`>((val) => /^group_/.test(val))
// z.infer<typeof して
// group: `group_${string}`
便利ですなあ
Discussion