타입 단언
이름 기준 타입 검사(Nominal Typing)
리터럴 타입 사용
/** 제네릭 Id 타입 */
type Id<T extends string> = {
type: T,
value: string,
}
/** 구체화된 Id 타입 */
type FooId = Id<'foo'>;
type BarId = Id<'bar'>;
/** 선택적으로 사용: 생성자 함수 */
const createFoo = (value: string): FooId => ({ type: 'foo', value });
const createBar = (value: string): BarId => ({ type: 'bar', value });
let foo = createFoo('sample')
let bar = createBar('sample');
foo = bar; // Error
foo = foo; // Okay열거형 사용
인터페이스 사용
Last updated