- Notifications
You must be signed in to change notification settings - Fork 13.2k
Open
Labels
In DiscussionNot yet reached consensusNot yet reached consensusSuggestionAn idea for TypeScriptAn idea for TypeScript
Description
With #60052, we now emit qualified names rather than generate an index signature for computed names in classes; however, this now puts us in an awkward place where regardless of errors, declaration emit diverges on isolatedDeclarations.
Playground Links:
- 5.7, without
isolatedDeclarations - Nightly, without
isolatedDeclarations - Nightly, with
isolatedDeclarations
export const greeting: unique symbol = Symbol(); export const count: unique symbol = Symbol(); export class MyClass1 { [greeting]: string = "world"; [count]: number = 42; } export enum PropertyNames { greeting = "greeting", count = "count", } export class MyClass2 { [PropertyNames.greeting]: string = "world"; [PropertyNames.count]: number = 42; } export let prop!: string; export class MyClass3 { [prop]: () => void = () => {} }Compared to --isolatedDeclarations false The declaration emit lacks expected contents in MyClass1 and MyClass2:
export declare const greeting: unique symbol; export declare const count: unique symbol; export declare class MyClass1 { - [greeting]: string; - [count]: number; } export declare enum PropertyNames { greeting = "greeting", count = "count" } export declare class MyClass2 { - [PropertyNames.greeting]: string; - [PropertyNames.count]: number; } export declare let prop: string; export declare class MyClass3 { [prop]: () => void; }It is surprising that prop is emitted regardless of --isolatedDeclarations, but not the other contents.
Metadata
Metadata
Assignees
Labels
In DiscussionNot yet reached consensusNot yet reached consensusSuggestionAn idea for TypeScriptAn idea for TypeScript