Repository navigation
Open
Labels
Awaiting More FeedbackThis means we'd like to hear from more people who would be helped by this featureThis means we'd like to hear from more people who would be helped by this featureNeeds ProposalThis issue needs a plan that clarifies the finer details of how it could be implemented.This issue needs a plan that clarifies the finer details of how it could be implemented.SuggestionAn idea for TypeScriptAn idea for TypeScript
Description
Anders Hejlsberg (@ahejlsberg) has had a few experiments to try to make it easier to describe the type of a class. Specifically:
-
avoiding the awkward static/instance pattern that users need to write on anonymous object types/interface types
var Thing: { new () => { instanceField: number; } staticField: string; }
-
allowing users to describe types with class-specific characteristics (e.g.
abstract)
The idea is to allow typeof to be followed by a class expression.
var Thing: typeof class Thing {
static staticField: string;
instanceField: number;
constructor() {}
}There are definitely some subtleties here. For example, handling loops and whether this syntax is allowed in JSDoc with a TypeScript-annotated class:
/** @type { typeof class C<T> { x: T } } */
// ^^^ ^^^
// TypeScript type parameters and annotations
// Are these allowed?
var Thing;Reacted by Ashley Claymore, Joe Calzaretta, ExE Boss, iuliust, Justin Grant, Toni Villena, Edoardo Luppi, gaowanqiu, South Drifter, Harry Solovay and 25 more
Reacted by Shlomi Borovitz, Peter Burns, Radosław Miernik, Andrew, Nate Ryall and Felipe S. S. Schneider
Reacted by Zzzen and Felipe S. S. Schneider
Metadata
Metadata
Labels
Awaiting More FeedbackThis means we'd like to hear from more people who would be helped by this featureThis means we'd like to hear from more people who would be helped by this featureNeeds ProposalThis issue needs a plan that clarifies the finer details of how it could be implemented.This issue needs a plan that clarifies the finer details of how it could be implemented.SuggestionAn idea for TypeScriptAn idea for TypeScript
Activity
ExE-Boss commentedon Nov 19, 2020
Would this make it possible to revisit microsoft/TypeScript-DOM-lib-generator#858 and #39504 (comment)?
jakebailey commentedon Nov 21, 2023
This is coming up again for isolated declarations; what is preventing us from emitting for class expressions in d.ts initializers, then referencing them that way?