Учитывая следующий сценарий,
function doSomething({ id, name, onSelect, onUnselect }: TDoSomething) {
if (onSelect) {
// I want `onUnselect` to be defined here
// ...
}
return { id, name }
}
type TDoSomething =
| IDoSomethingWithoutSelect
| IDoSomethingWithSelect
interface IDoSomethingWithoutSelect {
id: string
name: string
}
interface IDoSomethingWithSelect {
id: string
name: string
onSelect: (id: string) => void
onUnselect: (id: string) => void
}
То, что я хочу сделать, (концептуально?) Просто: хочу, чтобы onUnselect
было обязательно определено, если onSelect
. Другими словами, если я передам onSelect
, то эта функция также должна ожидать onUnselect
.
(игровая площадка к вам доступна здесь.)
Оказывается, мои попытки были неудачными. Я не знаю точно, что мне следует делать, чтобы добиться успеха.
(это еще кое-что, что я пытался сделать)