Microsoft/TypeScript

Accessors are always reduced to properties in object literal declarations

Open

#53,775 opened on Apr 14, 2023

View on GitHub
 (0 comments) (1 reaction) (0 assignees)TypeScript (6,726 forks)batch import
BugDomain: Declaration EmitHelp Wanted

Repository metrics

Stars
 (48,455 stars)
PR merge metrics
 (Avg merge 6d 17h) (9 merged PRs in 30d)

Description

Bug Report

Currently, accessors in object literals are condensed in plain properties - this an issue when get/set use different types. The workaround is to explicitly specify the type (see playground). Ideally, accessor should be preserved in declaration files, when possible.

🔎 Search Terms

accessors, object literal

🕗 Version & Regression Information

/

⏯ Playground Link

Playground link with relevant code

💻 Code

export const Foo = {
    get bar(): number { /* ... */ },
    set bar(value: number | string) { /* ... */ }
};

🙁 Actual behavior

export declare const Foo: {
    bar: number;
};

🙂 Expected behavior

export declare const Foo: {
    get bar(): number;
    set bar(value: number | string);
};

Contributor guide