๐คZod ๊ฐ ๋ฌด์์ธ๊ฐ์?
Zod is a TypeScript-first schema declaration and validation library.
Zod๋ ํ์ ์คํฌ๋ฆฝํธ ์ฐ์ ์คํค๋ง ์ ์ธ ๋ฐ ๊ฒ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋๋ค.
๐ค์ Zod๋ฅผ ์ฌ์ฉํ๋์?
ํ์ ์คํฌ๋ฆฝํธ๋ ์ปดํ์ผ ์์ ์์ ํ์ ์ ๊ฒ์ฌํฉ๋๋ค. ๋ฐํ์์ ๋์ ์ผ๋ก ์์ฑ๋๋ ๊ฐ๊ณผ ํ์ ์คํฌ๋ฆฝํธ์ ํ์ ๊ฐ์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ์ฌ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋๋ฐ์, ์ด๋ฅผ ๋ฐฉ์งํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฐ๋ก Zod์ ๋๋ค.
์๋์ ๊ฐ์ ์ํฉ์ด ๋ฐํ์์ ๋์ ์ผ๋ก ์์ฑ๋๋ ๊ฐ๊ณผ ํ์ ์คํฌ๋ฆฝํธ ํ์ ๊ฐ์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ๋ ์ฝ๋์ ์ ์ ๋๋ค.
interface User {
id: number;
name: string;
}
const Json = '{"id": 1323, "username": "lurgi"}';
try {
const user: User = JSON.parse(Json);
console.log(user.id);
console.log(user.name);
} catch (error) {
console.error('๋ฐํ์ ์๋ฌ:', error);
}
/*
์คํ ๊ฒฐ๊ณผ
1323
undefined
*/
//์ค๋ฅ๋ฅผ ์ก์๋ด์ง ๋ชปํ๊ณ undefined๋ฅผ ์ฐ๋๋ค.
๐คจZod๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ๊น์?
์์ ์์๋ฅผ zod๋ฅผ ํตํด์ ์๋ฌ๋ฅผ ๋ง๋ค์ด ๋ด ์๋ค.
npm i zod
import { z } from "zod";
const schema = z.object({
id: z.number(),
name: z.string(),
});
type User = z.infer<typeof schema>;
const Json = '{"id": 1323, "username": "lurgi"}';
try {
const user: User = schema.parse(Json);
console.log(user.id);
console.log(user.name);
} catch (error) {
console.error("๋ฐํ์ ์๋ฌ:", error);
}
/* ๋ฐํ์ ์๋ฌ: ZodError: [
{
"code": "invalid_type",
"expected": "object",
"received": "string",
"path": [],
"message": "Expected object, received string"
}
] */
๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ์์ ๊ฐ์ต๋๋ค.
zod๋ฅผ ํตํด ๋ง๋ค์ด์ง schema๋ฅผ ํตํด ํ์ ์ ๋ง๋ค๊ณ , parse๋ฅผ ํ ์ ์์ต๋๋ค.
๋์ ์ผ๋ก parse๋ฅผ ํ๋ ๊ณผ์ ์์ ํ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ ์ ์๊ธฐ์ ์๋ฌ๋ฅผ ๋ฐฐ์ถํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์์ ๊ฐ์ต๋๋ค. ๋ ์์ธํ ์ฌ์ฉ๋ฒ์ ์ตํ๊ธฐ ์ํด์๋ ์๋ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์!
'Front End > etc' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JWT ์ด๋์ ๋ณด๊ดํด์ผ ํ๋๊ฑธ๊น? (0) | 2023.12.28 |
---|---|
Jest ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋จํ ์ฌ์ฉ๋ฒ (0) | 2023.09.16 |