Мне было интересно, есть ли в машинописном тексте конструкция, которую я могу использовать, чтобы ограничить возможные значения объекта в зависимости от значений. Я могу описать это примерно так:
interface IObject = {
key1:string;
key2:string;
key3:"A" | null;
key4: (if key3 is 'A' then allow 'value1' |'value2' else if it is null then allow "value3" | "value4"
}
Поддерживает ли машинопись это?
Вы можете объявить тип следующим образом:
type IObject = {
key1:string;
key2:string;
} & ({
key3:"A",
key4: 'value1' |'value2'
} | {
key3: null,
key4: "value3" | "value4"
})
По сути, мы создаем объединение всех допустимых комбинаций key3
и key4
и пересекаем их с остальными свойствами.
Да, это почти так. Вопросы почти похожи, но точное совпадение ниже