TypeScript:使用默认泛型参数简化类型
假设我有以下对象:TypeScript:使用默认泛型参数简化类型,typescript,generics,types,Typescript,Generics,Types,假设我有以下对象: const questions = { whoCreatesIssues: { options: { sameTeam: { id: 'SAME_TEAM' }, management: { id: 'MANAGEMENT' } } }, issuesUseCas
const questions = {
whoCreatesIssues: {
options: {
sameTeam: {
id: 'SAME_TEAM'
},
management: {
id: 'MANAGEMENT'
}
}
},
issuesUseCase: {
options: {
engineering: {
id: 'ENGINEERING'
},
product: {
id: 'PRODUCT'
}
}
}
}
我想创建一个类型surveyquestionoptionskies
,例如
SurveyQuestionOptionsKeys<'issuesUseCase'> == 'engineering' | 'product'
surveyquestionoptionskies==“工程”|“产品”
目前,我使用以下两种类型来实现这一点:
type _SurveyQuestionsOptionsKeys<T extends typeof questions, K extends keyof T, K2 extends keyof T[K]> = keyof T[K][K2]
type SurveyQuestionsOptionsKeys<K extends keyof typeof questions> = _SurveyQuestionsOptionsKeys<typeof questions, K, 'options'>
type\u SurveyQuestionsOptionsKeys=keyof T[K][K2]
类型SurveyQuestionsOptionsKeys=\u SurveyQuestionsOptionsKeys
如何将其简化为一种类型而不是两种类型?谢谢 如果您允许自己将
问题
提取到自己的第一类问题中,这将非常简单:
type Questions = typeof questions;
type SurveyQuestionsOptionsKeys<K extends keyof Questions> = keyof Questions[K]['options'];
type X = SurveyQuestionsOptionsKeys<'issuesUseCase'>;
类型问题=问题类型;
type SurveyQuestionsOptionsKeys=问题的关键[K]['options'];
X类=调查问题分类;
(您也可以将两个出现的问题
替换为类型的问题
,这样做会起作用,但这有点重复,会使逻辑更难一眼理解)