Я хочу определить общий тип ExcludeCart<T>, который по существу T, но с указанным ключом (в моем случае, cart) удален. Так, например, ExcludeCart<{foo: number, bar: string, cart: number}> будет {foo: number, bar: string}. Есть ли способ сделать это в TypeScript?
Вот почему я хочу это сделать, если я подкражу неправильное дерево: я конвертирую существующую кодовую базу JavaScript в TypeScript, которая содержит функцию декоратора под названием cartify, которая принимает класс компонента React Inner и возвращает другой класс компонентов Wrapper.
Inner должен принимать cart prop, и ноль или более других реквизитов. Wrapper принимает cartClient prop (который используется для генерации cart prop для перехода к Inner), и любая поддержка, которую Inner принимает, кроме cart.
Другими словами, как только я могу определить, как определить ExcludeCart, я хочу сделать это с ним:
function cartify<P extends {cart: any}>(Inner: ComponentClass<P>) : ComponentClass<ExcludeCart<P> & {cartClient: any}>