다음과 같은 타입이 있습니다.
type Person = {
name: string;
age: number;
}
위의 타입을 다음처럼 변경하고자 합니다.
{
my_name: string;
my_age: number;
}
가장 간단한 방법은 다음과 같습니다.
type Prefix<T> = {
[K in keyof T as `my_${string & K}`]: T[K]
}
type NPerson = Prefix<Person>;
이 글의 목적은 TypeScript 4.1에서 처음 제공되는 as 연산자입니다. as 연산자를 활용한 또 다른 예로써 특정 타입을 갖는 키를 갖는 타입을 정의하는 것입니다.
type OnlyStrings<T> = {
[K in keyof T as T[K] extends string ? K : never]: T[K];
};
type NPerson2 = OnlyStrings<Person>;
위 코드 중 NPerson2는 다음과 같은 타입이 됩니다.
{
name: string;
// age: number; -> 제거
}
