본문 바로가기

TypeScript11

[TypeORM] 커스텀 값 entity에 매핑하여 들고오는 법 아래와 같은 유저 테이블이 있습니다. @Entity("users") export class User extends IdEntity implements UserScheme { @Column() password: string; @Column({ unique: true }) social_id: string; @Column() name: string; @Column() sex: boolean; @Column() phone: string; @Column({ unique: true }) email: string; @OneToMany(() => UserInClub, (userInClub) => userInClub.user, { cascade: true, }) public clubs: UserInClub[]; @One.. 2024. 2. 7.
빌드 시 에러가 나는 경우, minify 옵션을 꺼보자. 개발환경에서 프론트엔드 앱을 구축하고, 빌드해보면 예상치 못한 에러들이 발생하곤 한다. 타입스크립트를 사용하여 컴파일 시점에 최대한 에러를 검출하려 해도 외부 라이브러리 등에서 런타임 에러가 발생할 수도 있다. 예컨대, 개발이냐 프로덕션이냐 개발환경에 따라 생성되는 코드가 꼭 같다고 말할 수는 없다. 보통 빌드 시 minify를 통해 파일의 용량을 줄여주는데, 이때 코드가 난독화되기 때문에 에러가 발생한 구문을 보아도 이게 정확히 어떤 코드인지 구분이 어렵다. 이럴 때는 minify 옵션을 끄고 빌드해보면 에러가 난 곳을 쉽게 찾을 수 있다. vite react의 빌드 명령어는 tsc && vite build다. vite build --minify false로 빌드한 후 다시 에러로그를 확인해보자 min.. 2022. 12. 11.
[Typescript] 유니온 타입 사용 시 타입 증명하기 타입스크립트에서 유니온 타입을 유용하게 쓸 일이 되게 많다. 만약 그 유니온 타입이 primitive type끼리 유니온 연산을 한 것이라면 문제는 간단하다. typeof 연산으로 쉽게 타입을 정제할 수 있다. const func = (value: number | string) => { if(typeof value === "string") { value.toLowerCase(); } }; 하지만 복잡한 객체의 경우는 다르다. 공통으로 가진 프로퍼티가 아니면 각 객체가 가지는 프로퍼티에 접근이 불가능하다. 이때 타입스크립트에 값이 해당 프로퍼티를 가진 타입이나 인터페이스라는 것을 증명하여야 한다. interface Device { price: number; powerOn: () => void; powerO.. 2022. 11. 23.
[React/Typescript] 라이브러리없이 웹 캐싱 기능 구현하기 React Query같은 라이브러리를 쓰지 않고 내장된 Service Worker API를 통해 간단히 캐싱 기능을 구현할 수 있다. https://developer.mozilla.org/ko/docs/Web/API/Cache Cache - Web API | MDN Cache 인터페이스는 ServiceWorker 의 생명주기의 일부로 캐시 된 Request와 Response를 나타냅니다. developer.mozilla.org Cache 인터페이스들의 메서드는 위의 DOCS에서도 확인이 가능하고, 코드로도 쉽게 확인이 가능하다. 메서드들을 쉽게 사용하기 위해 유틸 함수 몇 개를 만들어보자. //utilities/cache.ts /** * 해당 이름을 가진 스토리지를 반환한다. * 만들어져 있다면, 만들어.. 2022. 10. 5.