Можно ли использовать деструктуризацию в интерфейсе, где свойство зависит от другого? Мои аргументы следующие:
interface PropsVariationA {
functionToExecute?: () => void;
executeExtraFunction: true;
}
interface PropsVariationB {
executeExtraFunction: false;
}
type Props = PropsVariationA | PropsVariationB;
Поэтому, когда я пытаюсь использовать его с деструктуризацией, я (очевидно) получаю ошибку:
function SomeFunctionWithDestructuring({
executeExtraFunction,
functionToExecute = () => {} // Error: property 'functionToExecute' doesnt exist on type 'Props'
}: Props) {
if (executeExtraFunction) functionToExecute();
return null;
}
Проверьте это demo .
Мне удалось заставить его работать без разрушения, но мне интересно, есть ли способ.