Как условно установить свойство TypeScript на основе другого вложенного свойства?Javascript

Форум по Javascript
Ответить
Anonymous
 Как условно установить свойство TypeScript на основе другого вложенного свойства?

Сообщение Anonymous »

У меня есть следующие типы:

Код: Выделить всё

type Settings = {
enableAdvancedFeature?: boolean;
};

type Options = {
settings?: Settings;
enforceAdvancedOrder?: boolean;
};
Я хочу, чтобы свойство EnableAdvancedOrder имело логическое значение только тогда, когда settings.enableAdvancedFeature имеет значение true.
Если параметр settings.enableAdvancedFeature имеет значение false или не определен, то EnforceAdvancedOrder должен быть неопределенным.
Вот пример желаемого поведения:

Код: Выделить всё

const validOption1: Options = {
settings: { enableAdvancedFeature: true },
enforceAdvancedOrder: true,
};

const validOption2: Options = {
settings: { enableAdvancedFeature: false },
enforceAdvancedOrder: undefined, // enforceAdvancedOrder should be undefined
};

const invalidOption: Options = {
settings: { enableAdvancedFeature: false },
enforceAdvancedOrder: true, // This should cause a TypeScript error
};
Я пытался определить условный тип для параметров, но не смог понять, как обеспечить соблюдение этой зависимости между вложенными свойствами.
Как я могу определить тип Options для достижения такого поведения, сохраняя при этом типобезопасность? Будем очень признательны за любые предложения!

Подробнее здесь: https://stackoverflow.com/questions/793 ... d-property
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»