2024/11 3

상수 값으로 타입 안전성 높이기

인자의 타입 지정하기일반적으로 인자의 타입을 지정한 후, 해당 타입의 값을 호출할 때 넣어주면 해당 타입에 들어있는지 확인 후 타입 에러를 결정한다. 이를 좀 더 편리하게 하기 위해서 객체에 값들을 필드와 값으로 추가해주면 하드코딩을 하지 않을 수 있다.const ObjectBooks = { novel: { label: "Novel", code: "N" }, essay: { label: "Essay", code: "E" }, poem: { label: "Poem", code: "P" },} as const;const BOOK_KEYS = { NOVEL: "novel", ESSAY: "essay", POEM: "poem",} as const;function testObjectGetCode(sta..

카테고리 없음 2024.11.11

더 엄격한 타입 검증하기

단순히 매핑하는 것보다 타입을 활용하면 더 유연한 필터링이 가능해진다. 하지만 객체 내부에서 다른 타입이 들어오게 된다면, 여전히 에러를 보이게 된다. 이때 zod, ts-io 등의 라이브러리을 통해 더 엄격한 타입 검증을 할 수 있다. 타입 검증 라이브러리ts-io HomeRuntime type system for IO decoding/encodinggcanti.github.io ts-io는 타입스크립트 기반의 타입 검증을 제공한다. 복잡한 데이터 구조나 타입이 필요한 경우 유용하며, 규모가 큰 프로젝트에서 유리하다.zod GitHub - colinhacks/zod: TypeScript-first schema validation with static type inferenceTypeScript-firs..

카테고리 없음 2024.11.08

필터링으로 타입 안정성 높이기

API의 응답값이 바뀌는 경우 배열이 갑자기 객체로 변하거나, 빈 배열이 아닌 null로 오거나 하는 경우가 종종 있다. 이렇게 되면 변경된 API가 배포되었으나, 클라이언트는 아직 배포를 못해 페이지 전체가 에러로 나타나기도 한다. 이러한 상황을 피하기 위해 예상하지 않은 타입은 거부하는 것이 좋다.기존 API 매핑기존에는 viewModel을 활용해서 아예 속성명을 다르게 가져왔다.import { CourseCardType } from "@/components/Courses/CourseCard";export type ResponseCoursesType = { id: number; title: string; short_description: string; is_free: boolean; enro..

카테고리 없음 2024.11.05