Closed
Description
TypeScript Version: 2.4.2
Code
type A = {
foo: number;
bar: string;
};
class Component<T> {
props: T;
constructor(props: T) {
this.props = props;
}
render(): Component<T> | null {
return null;
};
}
const exampleHOC = <T extends A>(
WrappedComponent: Component<T>
) => {
return class ExampleHOC extends Component<T> {
render() {
/** Rest types may only be created from object types. */
const { foo, ...rest } = this.props;
return new Component(this.props);
}
}
};
Expected behavior:
The code above compiles.
Actual behavior:
Rest types may only be created from object types.
error message is shown, which leads me to believe that at the time of destructuring the props, T
doesn't have any constraints applied to it.