interface Square {
kind: "square";
size: number;
}
interface Rectangle {
kind: "rectangle";
width: number;
height: number;
}
type Shape = Square | Rectangle;
type ShapeName = Shape['kind'] // 'square' | 'rectangle';
타입스크립트로 타입을 선언하고 해당 타입들을 하나로 묶을 때 이름만 묶을 방법이 궁금해서 찾아보았다
중간에 팩토리 메서드 처럼 매핑해주는 메서드에서 필요했기 때문이다
위와 같이 묶고 싶은 타입안에 특정 필드를 추가해서 해당 타입의 이름을 적어주고 유니온으로 묶은 다음 그 묶은 유니온에서 공통적으로 개별 타입의 이름이적혀있는 타입을 지정해주면 각 타입의 이름별로 묶을 수 있다