В TypeScript вы можете объединить два типа интерфейса, например
interface Foo {
var1: string
}
interface Bar {
var2: string
}
type Combined = Foo & Bar
Вместо сочетания клавиш я хочу исключить ключи из одного интерфейса в другой. В любом случае вы можете сделать это в TypeScript?
Причина в том, что у меня есть HOC, который управляет значением свойства для другого завернутого компонента, такого как
export default function valueHOC<P> (
Comp: React.ComponentClass<P> | React.StatelessComponent<P>
): React.ComponentClass<P> {
return class WrappedComponent extends React.Component<P, State> {
render () {
return (
<Comp
{...this.props}
value={this.state.value}
/>
)
}
}
С этим я могу написать
const ValuedComponent = valueHOC(MyComponent)
затем
<ValuedComponent />
но проблема в том, что возвращаемый тип компонента также использует тип реквизита из данного компонента, поэтому TypeScript будет жаловаться и попросить меня предоставить поддержку value
. В результате мне придется написать что-то вроде
<ValuedComponent value="foo" />
Какое значение в любом случае не будет использоваться. Я хочу здесь вернуть интерфейс без определенных ключей, я хочу иметь что-то вроде этого
React.ComponentClass<P - {value: string}>
Тогда value
не потребуется в возвращаемом компоненте. Возможно ли это в TypeScript?