TypeScript #8 유틸리티 타입 Utility Types
keyof
키워드는 어떤 타입을 기준으로, 해당 타입이 갖고 있는 멤버
여기서 내가 멤버라는 말을 사용했는데, typedef가 가능한 언어에서는 타입 정의시 선언된 식별자들을 멤버라고도 한다. 특히 C의 구조체 템플릿내 식별자들을 멤버라고 함.
이 식별자들은 필드, 키, 멤버 등 다양하게 불리지만… 엄밀하게 구분할 필요가 있어 보인다.
나는 필드는 뭔가 생성된 인스턴스에 속해있는 뉘앙스도 있는거 같아서 앞으로는 멤버라고 부르려고 한다.
아무튼, 멤버의 키들을 가져온다.
interface User {
id: number;
name: string;
age: number;
gender: "m" | "f";
}
type Userkey = keyof User;
이때 반환값이 다시 type으로 선언되는걸 주목하자. 반환된 키들은 배열이나, 유사배열등으로 반환되는게 아니다!!
배열로 반환받고 싶다면 다른 API많으니까 객체, 배열 관련 API사용하자..
다만 이렇게 타입으로 사용할 수 있을 뿐임.
다른 값을 넣으려고 하면 타입 불일치 오류가 뜬다.
Partial<>타입 은 프로퍼티를 모두 옵셔널로 변환시켜준다.
관리자 객체를 만들고 싶다고 해보자. 사실 관리자 객체는 저정도 정보만 있으면 충분하다. 나머지 값을 할당해주기 싫다면 타입으로 Partial<T>
를 이용한다.