Я создаю библиотеку TypeScript, которая использует некоторые интерфейсы из другой библиотеки. Я пытаюсь определить тип из пересечения обобщенного типа c и интерфейса, которым я не управляю, в сочетании с объединением между void
, которое имеет особое значение в библиотеке зависимостей.
Я попытался создать минимальное представление проблемы, с которой я сталкиваюсь.
export type AllProps<Props> = (Props & IDependecyProps) | void;
interface MyProps {
disableCache: boolean;
}
function doTheThing(props: AllProps<MyProps>) {
// Property 'disableCache' does not exist on type 'AllProps'.
// Property 'disableCache' does not exist on type 'void'.ts(2339)
console.log(props.disableCache);
}
Моя цель состоит в том, чтобы AllProps
позволил вам указать либо disableCache
, либо любые свойства в IDependecyProps
, ИЛИ тип приводит к void
. Библиотека, от которой я зависим, имеет особое значение для типа void
, что делает ее полезной.
РЕДАКТИРОВАТЬ: я сделал пример кода слишком простым, забыл добавить обобщенный тип c.