Closed
Description
Search Terms
Constructor, utility type, lib.es5.d.ts
Suggestion
The following type should be added to lib.es5.d.ts:
type Constructor<T> = new (...args: any[]) => T
Use Cases
This is a common pattern used in mixins and other class oriented declarations:
This also complements the existing utility types:
Examples
type Constructor<T> = new(...args: any[]) => T;
function Tagged<T extends Constructor<{}>>(Base: T) {
return class extends Base {
_tag: string;
constructor(...args: any[]) {
super(...args);
this._tag = "";
}
}
}
const TaggedPoint = Tagged(Point);
Checklist
My suggestion meets these guidelines:
- This wouldn't be a breaking change in existing TypeScript/JavaScript code
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
- This feature would agree with the rest of TypeScript's Design Goals.