μ΅κ·Ό κ°μ₯ ν«ν λ°μ΄ν°λ² μ΄μ€μΈ PlanetScale(νλλ μ€μΌμΌ)μ Prisma(ν리μ¦λ§)μ Kysely(ν€μ¬λ¦¬)λ₯Ό μ΄μ©ν΄ κ°κ°μ μ₯μ μ μ΄λ € λ¨μ μ μμμν€λ©° κ°λ°νλ λ°©λ²μ λνμ¬ μμλ΄ λλ€.
μ΅κ·Ό κ°μ₯ ν«ν λ°μ΄ν°λ² μ΄μ€μΈ PlanetScale(νλλ μ€μΌμΌ)μ μλκ°λ ORM Prisma(ν리μ¦λ§)μ ν¨κ» λ μ½κ³ νΈνκ² μ¬μ©ν΄ 보λ λ°©λ²μ λνμ¬ μμλ΄ λλ€.
μ€λμ€λ μ±μ₯ν μ μλ μ§κΈ΄ κ°λ°μκ° λκΈ° μν λ°©λ²μ€ λͺ©νλ₯Ό ν¨μ¨μ μΌλ‘ μ νκ³ , λκΈ°λΆμ¬λ₯Ό μ»κΈ° μν λ°©λ²μ λν΄ μ 리ν κΈμ λλ€.
2023λ μ λ§μ£Όνλ©° μμΌλ‘μ κ³νμ λ§λ€μ΄λ³΄λ μκ°μ κ°μ§κ² λμμ΅λλ€.
2022λ μ 보λ΄λ©° 1λ λλ κΈ°κ°λμ λμκ²λ 무μ¨μΌμ΄ μμκ³ , κ³Όμ° λλ μ±μ₯νμμκΉ? - μ΄λ μ€ννΈμ κ°λ°μμ νκ³
Hydrationκ³Ό SSRμ λν μ΄ν΄λ₯Ό ν΅ν΄ zustandμ μ μ©ν μ μλ redisλ₯Ό νμ©ν persistant-storageλ₯Ό ꡬνν΄λ΄ λλ€.
μ΄μ κΈμμ Nextjsμ λν λ΄μ©μ κ°λ¨νκ² μ΄ν΄λ³΄μλ€λ©΄ μ΄λ²κΈμμλ κ·Έλμ μ΄λ»κ² zustandμ nextjsμμ hydrationμ μ§ννλμ§μ λνμ¬ μμ보λ κΈμ λλ€.
SSRμ΄ Nextjsμμ μν©μ λ°λΌ μ΄λ€ μμλ‘ μμ©νκ² λλμ§ μμ보λ κΈμ λλ€.
μ΄λ²μ μλ‘μ΄ νλ‘μ νΈλ₯Ό μ§ννλ©° λ§μ£Όν λ¬Έμ μ λνμ¬ ν¬μ€ν μ λ€μ§νκ² λμμ΅λλ€.μ€λ«λ§μ μΉκ°λ°μ νλ€λ³΄λ λ§μ΄ λ°λ λΆλΆμ΄ λ§μμ λ§μ£Όνλ ν¬κ³ μμ λ¬Έμ λ€μ΄ μμ£Ό λ§μλλ°μ,μ¬λ¬κ°μ§ λ¬Έμ κ° μμμ§λ§, zustand μ¦ μνκ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬μ persistλ―Έλ€μ¨μ΄λ₯Ό
afterAll(fn, timeout)afterEach(fn, timeout)beforeAll(fn, timeout)beforeEach(fn, timeout)describe(name, fn)describe.each(table)(name, fn, timeout)descr
ν΄λ₯Ό λκΈΈμ―μ μ¬μ¬ ν¬μ€ν λλ κ°λ°μλ€μ νκ³ λ‘..!!μ΄μ λλ κ°λ°μκ° λκΈ°λ‘ λ§μμ λ¨ΉμμΌλ νλ² μ¨λ³΄λ €κ³ νλ€.2020λ μ μ λ§ λ§μ μΌλ€μ΄ μμλκ² κ°λ€. λΉλ‘ μμμ μΉκ΅¬λ€μ λ°μ μ·¨μ μ€λΉλλ¬Έμ μκΈ°κ°μ λλΌκ³ κΈνκ² μ€λΉν κ°μ΄ μμ§μμ μμ§λ§, κ·Έλλ μ§κΈ
νμ λ¨μΈ μ¦ type-assertionμ μ¬μ©ν΄ λ³΄μ ¨λμ?strictλͺ¨λλ‘ μ‘°κΈλ μ격ν νμ 체νΉμ ν λμ null type μλ¬λ₯Ό ν΄κ²°νκΈ° μν΄ μμ£Ό μ¬μ©λ μ μλ non-null assertion λν νμ λ¨μΈ λ¬Έλ²μ΄μ£ ? νμ§λ§ μ¬μ©μ eslintμμ λ€μκ³Ό κ°μ΄
νμ λ³μΉμ μΈν°νμ΄μ€μ λΉμ·νμ§λ§ μ§μ νμ μ μ΄λ¦μ λΆμ¬μ€ μ μμ΅λλ€. μ¬μ©λ²μ type λ³μΉμ΄λ¦ {}μ λλ€. μ λ²μ₯μμ λ§λ μ μ μ μ‘μ μ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ μΈν°μΉμ νμ μ λ§λ€κ³ μ΄λ¦μ λΆμ¬ν΄ λ³΄κ² μ΅λλ€. κ·Έλ λ€λ©΄ μ΄λ κ² μλμ²λΌ μ¬μ©ν΄ μ€ μ μκ² μ£ ? λ μ½λλ
Intersectionνμ μ λ§ κ·Έλλ‘ μ¬λ¬νμ μ΄ ν©μ³μ§ νλμ νμ μ λ§ν©λλ€. λκ°μ Interfaceνμ μ μΈμλ₯Ό μ λ¬λ°μ νλμ κ°μ²΄λ‘ ν©μ³μ£Όλ ν¨μλ₯Ό λ§λ€μ΄μ£ΌμΈμ.μ΄λ° κ²½μ°μ ν¨μμ λ°νκ°μ 무μμΌλ‘ μ§μ ν΄ μ£Όμ΄μΌ ν κΉμ? λ°λ‘ Intersectionμ μ¬μ©ν΄
μ λ€λ¦μ μ¬μ©νλ©΄ ν¨μκ° νλΌλ―Έν°λ₯Ό λ°λ―μ΄ νμ μ νλΌλ―Έν°ν ν΄μ μ¬λ¬κ°μ§ νμ μ λ°μμ€ μ μμ΅λλ€. μ¦ μ¬λ¬λ² μ¬μ¬μ©μ΄ κ°λ₯νκ±Έ λ§λ€λ μ¬μ©ν μ μκ² μ£ ?μλ μ½λλ μΈμλ₯Ό νλ λ겨 λ°μ λ°νν΄μ£Όλ ν¨μμ λλ€.tringμΌλ‘ μ§μ λμ΄ μμ§λ§ λ§μ½ μ¬λ¬ κ°μ§ νμ μ
μ΄κ±°νμΈ ENUMμ λνμ¬ μμ보μμ!λ³΄ν΅ Javaμμ μμ£Ό μ ν΄λ³Έ κ²½νμ΄ μμ μ μμκ² κ°μλ°, νμ μ€ν¬λ¦½νΈμμλ λ¬Έμν μ΄λκ³Ό μ«μν μ΄λμ μ§μνκ³ μμ΅λλ€.μ΄κ±°νμ μμλ€μ μ§ν©μ μ΄λ¦μ λΆμ¬ν μ μμ΅λλ€. μ€νλ² μ€ λ±κΈμ enumμΌλ‘ ννν΄ λ³ΌκΉμμ΄μ μ€ν
μΉ μ ν리μΌμ΄μ μ ꡬνν λ μμ£Ό μ¬μ©λλ ν¨μλ νμ μ€ν¬λ¦½νΈλ‘ ν¬κ² λ€μ 3κ°μ§ νμ μ μ μν μ μμ΅λλ€.ν¨μμ νλΌλ―Έν°(λ§€κ°λ³μ) νμ ν¨μμ λ°ν νμ ν¨μμ ꡬ쑰 νμ \-νμ μ€ν¬λ¦½νΈ νΈλλΆ(https://joshua1988.github.io/ts/guid
μΈν°νμ΄μ€λ μνΈ κ°μ μ μν μ½μ νΉμ κ·μΉμ μλ―Έν©λλ€. νμ μ€ν¬λ¦½νΈμμμ μΈν°νμ΄μ€λ λ³΄ν΅ λ€μκ³Ό κ°μ λ²μ£Όμ λν΄ μ½μμ μ μν μ μμ΅λλ€.κ°μ²΄μ μ€ν(μμ±κ³Ό μμ±μ νμ )ν¨μμ νλΌλ―Έν°ν¨μμ μ€ν(νλΌλ―Έν°, λ°ν νμ λ±)λ°°μ΄κ³Ό κ°μ²΄λ₯Ό μ κ·Όνλ λ°©μν΄λμ€μΈν°
νμ μ€ν¬λ¦½νΈλ μλ°μ€ν¬λ¦½νΈμ λμΌν λ°©λ² μ¦, const, let, varλ‘ λ³μλ₯Ό μ μΈν μ μμ΅λλ€.μλ μ½λλ₯Ό νλ² λ³ΌκΉμ? μλ°μ€ν¬λ¦½νΈ μμμλ λ³ λ¬Έμ μμ΄ μ μλν μ½λλ‘ λ³΄μ΄κ³ μμ΅λλ€. νμ§λ§ typescriptμμλ μ²μ 0μ μ μΈνμλ scoreμ d
νμ μ€ν¬λ¦½νΈ.. μ λ§ κ°κΉκ² λλΌμλ©΄ κ°κΉμ§λ§ λ§μ μ μ©νμ§κ° μ½μ§ μμ κ·Έκ²!! λ€μνλ² λμ ν΄ λ³ΌκΉμ..!!νμ μ€ν¬λ¦½νΈλ νμ μ κ°μ§κ³ μλ μλ°μ€ν¬λ¦½νΈμ μνΌμ μ΄λ©°, μ΄λ ν λΈλΌμ°μ , μ΄μ체μ μμ ꡬλλλ μ€νμμ€μ λλ€. μ¦, μλ°μ€ν¬λ¦½νΈμ μμ μ§ν©μ΄κΈ° λλ¬Έμ