타입스크립트 공부를 하면서 어려운 점 중 하나는 value의 관점이 아닌 해당 value의 타입의 관점으로 봐야한다는 점 같습니다.
타입을 이용해 새로운 타입을 만드는 여러가지 방법을 타입스크립트 공식 문서를 참고하며 정리해 보았습니다.
keyof Type Operator
object 타입의 키를 문자열, 혹은 숫자 리터럴 타입으로 반환합니다.
object 타입이 여러개의 키를 갖는다면 이를 유니온 타입으로 반환합니다.
위에서 선언한 타입은 PersonKeys = 'name' | 'age' | 'address'로 표현한 것과 같습니다.
typeof Type Operator
typeof는 변수의 값의 type을 반환하는 키워드 입니다. 타입이 아닌 변수나 함수와 같은 값의 타입을 얻어내야 할 때 사용합니다.
Indexed Access Types
object 타입의 키의 타입을 참조할 수 있습니다.
배열의 index를 통해 값을 접근할 수 있듯이 object의 타입을 키를 통해 타입에 접근이 가능합니다.
키를 유니온으로 표현할 경우 키 타입들의 유니온 타입이됩니다.
Person의 name키의 타입은 string, age키의 타입은 number이기 때문에 ObjectProperty 타입은 이를 union으로 표현한 number | string이 됩니다.
배열 요소의 타입을 'number'키를 이용하여 접근하기
Conditional Types
삼항연산자를 이용하면 condition에 따라 다른 타입을 지정할 수 있습니다.
SomeType extends OtherType ? TrueType : FalseType;
메서드를 여러 타입의 input을 위해 오버로딩할 때 비슷하게 생긴 여러개의 코드를 생성해야 합니다. 이 때 conditional type을 통해 이를 간결하게 표현할 수 있습니다.