devlog study typescript zod validator
TypeScript ๐
- ์์น ํ์คํ ๊ณผ์
- ๊ฐ์ ๋ฃ๊ณ ์ ๋ฆฌ
- LLM ํ์ฉ ๋ด์ฉ ๋ณด์ถฉ
๋ด์ด๋ณด๊ธฐ
Zod
- TypeScript-first schema validation
z.treeifyError()
- ZodError๋ ๋ฐฐ์ด ํํ๋ฅผ ๋ฐ
- ์ด๋ฅผ ๊ฐ์ฒด ํ์ ์๋ฌ๋ก ๋ณํํ๋ method
z.string("Not a string!").parse(12);
// =>
โ throws ZodError {
issues: [
{
expected: 'string',
code: 'invalid_type',
path: [],
message: 'Not a string!' <-- ๐ custom error message
}
]
}
const tree = z.treeifyError(result.error);
// =>
{
errors: [ 'Unrecognized key: "extraKey"' ],
properties: {
username: { errors: [ 'Invalid input: expected string, received number' ] },
favoriteNumbers: {
errors: [],
items: [
undefined,
{
errors: [ 'Invalid input: expected number, received string' ]
}
]
}
}
}ZodSafeParseResult
- ZodSafeParseResult in Zod (v4) is a type used with the safeParse and safeParseAsync methods. It represents the result of parsing data with a schema, capturing either the parsed data (on success) or error details (on failure).

- success / error ๊ตฌ์กฐ
- error: unknown ํ์

- error: unknown ํ์
๐ก typecheck ํํธ์ฉ ์ฝ๋
export const validateAsync = async <T extends z.ZodObject>(
zobj: T,
obj: FormData | Record<string, FormDataEntryValue | string | unknown>,
): Promise<[ValidError] | [undefined, z.core.output<T>]> => {
try {
// ...
} catch (e) {
// ...
}
};FormDataEntryValue | string | unknown ์๋ฏธ
โ์ด ์๋ฆฌ์ ์ด๋ค ํํ์ ๋ฐ์ดํฐ๊ฐ ์ฌ์ ์๋์งโ ์ ๋ํ ํํธ๋ฅผ ๋จ๊ธฐ๋ ์ฅ์น
-
FormDataEntryValue: ๋ธ๋ผ์ฐ์ FormData๊ฐ์ฒด๊ฐ ๋ฐํํ๋ ์ค์ ๊ฐ์ ํ์ (string | File) -
string: server side์์ ์ผ๋ฐ ๋ฌธ์์ด ํํ๋ก ๋ฐ์์๋ ์์ -
unknown: ์์ง ๋ช ํํ ์ ํด์ง์ง ์์ ํ์- ์ธ๋ถ์์ ์ด๋ค ๊ฐ์ด ๋ค์ด์ฌ์๋ ์๋ค๋ ๊ฐ๋ฅ์ฑ์ ์ด์ด๋
์ด๋ ๊ฒ ์ฌ๋ฌ ํ์
์ ์์ฑํด๋๋ฉด,
โ์ด ๊ฐ์ ์ต์ํFormDataEntryValue,string, ํน์ ๊ทธ ๋ฐ์ ์ด๋ค ๊ฐ(unknown)์ผ์ ์๋คโ ๋ ์๋๋ฅผ ๋ช ์ํ๊ฒ ๋จ
- ์ธ๋ถ์์ ์ด๋ค ๊ฐ์ด ๋ค์ด์ฌ์๋ ์๋ค๋ ๊ฐ๋ฅ์ฑ์ ์ด์ด๋
์ด๋ ๊ฒ ์ฌ๋ฌ ํ์
์ ์์ฑํด๋๋ฉด,
-
unknownํ๋๋ง ๋จ๊ฒจ๋๋ค๋ฉด,- *โ์ด ์๋ฆฌ์ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์ฌ์ ์๋์งโ*์ ๋ํ ๊ตฌ์ฒด์ ์ธ ํํธ๊ฐ ์์ ํ ์ฌ๋ผ์ง
์ฒญ์๋ | ์ฒญ๋ | ์ฌ๋์ด๋ผ๊ณ ์ ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง์ด์ง๋ง, ์ฝ๋ ํด์์ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์
์๋ฌธ๊ฐ๊ธฐ
์ฐพ์๋ณด๊ธฐ
- [ ]