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类=调查问题分类;
(您也可以将两个出现的
问题
替换为
类型的问题
,这样做会起作用,但这有点重复,会使逻辑更难一眼理解)