2024 스터디
Yongku cho edited this page Feb 7, 2024
·
1 revision
수동
export const paths = {
framework: {
react: '/framework/react',
vue: '/framework/vue',
},
language: {
typescript: '/language/typescript',
javascript: '/language/javascript',
} ,
pattern: {
mvc: '/pattern/mvc',
flux: '/pattern/flux',
}
};
type PathsType = typeof paths;
type PathsKeys = keyof PathsType;
type PathsInnerKeys = {
[key in PathsKeys]: keyof PathsType[key]
}[PathsKeys];
재귀적으로 처리
export const paths = {
framework: {
react: '/framework/react',
vue: '/framework/vue',
},
language: {
typescript: '/language/typescript',
javascript: '/language/javascript',
} ,
pattern: {
mvc: '/pattern/mvc',
flux: '/pattern/flux',
}
};
type Keys<Type> = {
[Key in keyof Type]: keyof Type[Key] extends string
? keyof Type[Key]
: Keys<Type[Key]>
}[keyof Type];
type PathsType = typeof paths;
type PathsInnerKeys = Keys<PathsType>
내부 키 모두 추출하기
export const paths = {
framework: {
react: '/framework/react',
vue: '/framework/vue',
},
language: {
typescript: '/language/typescript',
javascript: '/language/javascript',
},
pattern: {
flux: '/pattern/flux',
model_view: {
mvc: '/pattern/model_view/mvc',
mvvm: '/pattern/model_view/mvvm',
}
}
};
type Keys<Type> = Type extends string
? never
: keyof Type | Keys<Type[keyof Type]>;
type PathsType = typeof paths;
type PathsKeys = Keys<PathsType>;
재귀적으로 값 추출
export const paths = {
framework: {
react: '/framework/react',
vue: '/framework/vue',
},
language: {
typescript: '/language/typescript',
javascript: '/language/javascript',
},
pattern: {
flux: '/pattern/flux',
model_view: {
mvc: '/pattern/model_view/mvc',
mvvm: '/pattern/model_view/mvvm',
}
}
} as const;
type Values<Type> = {
[Key in keyof Type]: Type[Key] extends string
? Type[Key]
: Values<Type[Key]>
}[keyof Type];
type PathsType = typeof paths;
type PathsValues = Values<PathsType>;