Zodを使っていてある固定文字列であること精査したい時にどうするか調べた
具体的にはURLのある階層の接頭辞が「a-」で始まっているかどうかを精査したい
const URI_PREFIX = "a-";
z.literalを使う
使い方
const tuna = z.literal("tuna"); const twelve = z.literal(12); const twobig = z.literal(2n); // bigint literal const tru = z.literal(true); const terrificSymbol = Symbol("terrific"); const terrific = z.literal(terrificSymbol); // retrieve literal value tuna.value; // "tuna"
上の例のように Symbol型 に対しても定義できるので、区別したい場合はSymbol型にしておくのが良さそう
const URI_PREFIX = "a-"; const UriPrefix = z.literal(Symbol(URI_PREFIX)); export const validateUri = (uri: string) => UriPrefix.safeParse(uri.slice(0, 2)).success;