JSON โ TypeScript ํ์ ์์ฑ๊ธฐ JSON to TS
JSON ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ์ฌ ์๋ฒฝํ TypeScript Interface, Type ๋ณ์นญ ๋ฐ Zod ์คํค๋ง๋ก ์ค์๊ฐ ์๋ ๋ณํ
JSON โ TypeScript ๋ณํ ํต์ฌ ์์น & ๊ฐ์ด๋
๋ฐฐ์ด ๊ฐ์ฒด ํตํฉ ์ถ๋ก (Object Array Merging)
๋ฐฐ์ด ๋ด ์ฌ๋ฌ ๊ฐ์ฒด์ ๋ชจ๋ ํค๋ฅผ ์ ์ฒด ๋ณํฉ ๋ถ์ํ๋ฉฐ, ์ผ๋ถ ๊ฐ์ฒด์๋ง ์กด์ฌํ๊ฑฐ๋ null์ธ ํค๋ optional(?) ๋ก ์ง๋ฅํ ์ถ๋ก ํฉ๋๋ค.
ํน์ ํค ์์ ์๋ณ์ (Quoted Identifiers)
content-type, @id, ์ซ์ ์์ ํค ๋ฑ ์ ํจํ์ง ์์ ์๋ณ์๋ ์๋์ผ๋ก ๋ฐ์ดํ('...')๋ก ๊ฐ์ธ ์ปดํ์ผ ์ค๋ฅ๋ฅผ ์์ฒ ์ฐจ๋จํฉ๋๋ค.
Zod ๋ฐํ์ ์คํค๋ง ์ง์
Next.js Server Actions, tRPC ๋ฑ์์ ์ฆ์ ํ์ฉํ ์ ์๋๋ก z.object({...}) ๋ฐ z.infer ์ฝ๋๋ฅผ ๋์ ์์ฑํฉ๋๋ค.
์ค์ฒฉ ๊ตฌ์กฐ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ
์ค์ฒฉ ๊ฐ์ฒด๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ๋ญ๊ฐ์ง ์๊ณ UserProfile, Address ๋ฑ ์์ ๋ฌธ๋งฅ์ ๋ง๋ PascalCase ๋
๋ฆฝ ์ธํฐํ์ด์ค๋ก ๊น๋ํ๊ฒ ๋ถ๋ฆฌ ์ถ์ถํฉ๋๋ค.
์๊ฒฌ ๋ฐ ์ง๋ฌธ
0์์ง ๋ฑ๋ก๋ ์๊ฒฌ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋๊ธ์ ๋จ๊ฒจ๋ณด์ธ์!
๋๊ธ ์์
๋๊ธ ์ญ์