Я хочу определить общий тип 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}>