-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Closed
Description
Search Terms
abstract new
Suggestion
type X = { abstract new () :object };
Use Cases
To ensure an fn arg is an constructor but can't directly construct.
Examples
declare function fn (constructor :{ abstract new () :object }) :void;
fn( { }); // error, must be class
fn( class { }); // error, must be class and can't as new.target
fn( class { protected constructor () {} }); // error, must be class and can't as new.target even in it self
fn(abstract class { }); // right
fn(abstract class { protected constructor () {} }); // right
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.
Metadata
Metadata
Assignees
Labels
No labels