본문 바로가기

Language/TypeScript

(4)
<TS> 태그드 유니온 패턴 1. 소개 이펙티브 타입스크립트에서 다음과 같이 Tagged Union Pattern을 시작하고 있다. 효과적으로 타입을 설계하려면, 유효한 상태만 표현할 수 있는 타입을 만들어 내는 것이 가장 중요합니다. - 아이템28, p156 - 태그드 유니온 패턴은 타입에 태그를 추가하여 효율적으로 타입을 설계할 수 있는 방식이다. 이를 어디서 활용하면 좋을지 크게 두 가지로 나누어 정리해 보았다. 2. 사용 * 각 필드가 연관되어 특정될 경우 - 특정 페이지의 상태를 설계한다고 생각해보자. 아마 다음과 같은 타입의 상태를 정의할 수 있을 것이다 interface State { pageText: string; isLoading: boolean; error?: string; } - 단순히 봤을 때는 문제가 없어 보..
<TS> 타입가드 * 소개 - 타입가드는 타입스크립트 컴파일러가 더 명확하게 타입을 예측할 수 있도록 코드를 작성하는 방법 중 하나이다. 공식문서를 찾아보니 Narrowing(좁히기)와 동의어로 쓰이는 것 같아서 정리해보려한다. - 이번 포스팅에서 다루는 타입가드의 종류는 7가지 이다. * typeof Type Guards * Truthiness Narrowing * Equality Narrowing * The in operator Narrowing * instanceof Narrowing * Using type predicates * Discriminated Unions * typeof Type Guards - 가장 기본적으로 알고 있는 타입가드방식이다. data는 number 또는 string을 받을 수 있으나 typ..
<TS> 효과적으로 타입 명시하기 1. 소개 필자가 타입스크립트를 사용하던 초반엔 선언하는 모든 곳에 당연히 타입을 명시해야 한다고 생각했다. 하지만 타입스크립트를 계속 쓰다보니 자연스럽게 타입추론이 생각보다 잘 일어난다는 것을 깨달았고, 단순한 선언 구문에서는 사용하지 않았다. 타입 스크립트의 많은 타입 구문은 사실 불필요합니다. 이펙티브 타입스크립트 p.108 그럼에도 불구하고 타입을 언제 명시하는 것이 좋을지에 대해서는 크게 생각해본 적이 없었다. 그러나 최근 이펙티브 타입스크립트를 읽으며 타입추론에 대해 좀 더 자세하게 접하게 되었고, 그 중 어떤 상황에서 타입명시를 쓰면 좋을지에 대해 읽고 정리해보았다. 타입이 추론될 수 있음에도 여전히 타입을 명시하고 싶은 몇 가지 상황이 있습니다. 이펙티브 타입스크립트 p.112 2. 사용 ..
<TS> 유틸리티 타입으로 반복 줄이기 1. 반복 줄이기 - 타입스크립트를 사용하다보면 실제 런타임에 동작하지 않는 코드(타입 관련 코드)임에도 반복되는 작업들을 하는 경우가 생긴다. - 실제 런타임에 동작하는 코드에서는 다양한 방식으로 반복을 줄이기 위해 노력한다. 하지만 우리는 타입스크립트의 타입과 관련된 부분에서는 크게 신경쓰지 않거나 어떻게하면 좋을지 모르곤 한다. 이를 해결하기 위해 타입스크립트에서 어떻게 이러한 부분을 해결할 수 있을지 알아보자. * 확장 - 인터페이스의 확장은 반복을 제거하는 방법 중 하나이다. interface Person { firstName: string; lastName: string; } interface PersonWithBirthDate extends Person { birth: Date; } - 타입..