- 다음과 같이 타입을 만들어서
as
키워드로 붙여줘야한다 그래야 key의 타입과 value의 타입을 타입스크립트가 추론할수 있다.
export type Entries<T> = {
[K in keyof T]: [K, T[K]];
}[keyof T][];
- as 키워드로 assertion을 해야지만, key, value 타입이 추론된다.
const test = (template: ITemplate2) => {
(Object.entries(template) as Entries<ITemplate2>).map(([key, value]) => {
return [key, value];
});
};
- typeof 키워드 (as const로 선언한 객체)
const platforms = {
WINDOWS: 'Win',
MAC: 'Mac',
IOS: 'IPhone|iPad|iPod',
ANDROID: 'Android',
LINUX: 'Linux',
} as const;
// 해당 객체의 타입이 그냥 만들어진다.
type What = typeof platforms;
// 해당 객체의 키값이 유니온 타입으로 만들어진다.
type GOKEY = keyof typeof platforms;
const platforms = {
WINDOWS: 'Win',
MAC: 'Mac',
IOS: 'IPhone|iPad|iPod',
ANDROID: 'Android',
LINUX: 'Linux',
}
// 해당 객체의 타입이 그냥 만들어진다.
type What = typeof platforms;
// value가 string이건 아니건 상관없이 "키 값"이 유니언타입으로 나온다.
type GOKEY = keyof typeof platforms;