#typescript #types #type-conversion
Вопрос:
Я использую PartialDeep
от type-fest, на const
подобном:
const test = {
value: 1,
secondLevel: {
value: 1,
thirdLvl: {
value: 1,
fifthLvl: {
value: 1
}
}
}
}
И у меня было бы что-то вроде этого:
type PD = {
value?: number;
secondLevel?: {
value?: number;
thirdLvl?: {
value?: number;
fifthLvl?: {
value?: number
}
}
}
}
Но всегда получаю только 1 глубокое необязательное свойство.
Может ли кто-нибудь объяснить это или предложить какое-то обходное решение? Спасибо.
Ответ №1:
Я думаю, что это работает нормально.
Следует отметить одну вещь: как проявляется этот тип. Вы, вероятно, видите что-то вроде:
type TestType = {
value?: number | undefined;
secondLevel?: PartialObjectDeep<{
value: number;
thirdLvl: {
value: number;
fifthLvl: {
value: number;
};
};
}> | undefined;
}
Может показаться, что второй уровень не имеет дополнительных свойств , однако вы также увидите, что второй уровень также обернут PartialObjectDeep<...>
, что приводит к частичному выполнению на этом уровне.
Если вы попытаетесь использовать этот тип, вы увидите, что он работает так, как вы ожидаете:
// Works fine, no errors
const testPartial: PartialDeep<typeof test> = {
value: 1,
secondLevel: {
thirdLvl: {
value: 1
}
}
}