Giter Club home page Giter Club logo

Comments (6)

weswigham avatar weswigham commented on June 2, 2024 3

Hm. We didn't allow get/set in types for a looong time, and only added it to support differing getter/setter type pairs - and to avoid accidentally breaking backcompat for people, we only emitted getter/setter pairs if the types of the getter and setter actually differed.

@RyanCavanaugh do you think we've supported getter-setter pairs in .d.ts files for long enough that we can just swap our emit to always retaining the getters/setters, rather than doing the property coalescing it does now?

from typescript.

jakebailey avatar jakebailey commented on June 2, 2024 2

I feel like we just talked about this in a recent design meeting or something; IMO we should be preserving things as-written and not be doing our merging thing anymore.

from typescript.

dragomirtitian avatar dragomirtitian commented on June 2, 2024

I am actually surprised this does error. I remember adding an error if there is a type on both getter and setter, and only collapsing them if the type was specified only on one of them.

from typescript.

lucacasonato avatar lucacasonato commented on June 2, 2024

Just found another problem related to the current emit:

export const x = {
    set foo(str: string) {}
}

emits as:

export declare const x: {
    foo: string;
};

even though it should probably be

export declare const x: {
    set foo(str: string);
};

or

export declare const x: {
    get foo(): void;
    set foo(str: string);
};

from typescript.

jakebailey avatar jakebailey commented on June 2, 2024

Yeah, TS internally has no notion of a "set only property", see #58112 and #58119

(Void is definitely not the right answer, though)

from typescript.

dragomirtitian avatar dragomirtitian commented on June 2, 2024

I don't think this is actually an issue with the errors on second thought. The way I implemented this in the sample declaration emitter was by collapsing the accessor pair only if there had one type annotation between them and preserving the get/set in the type otherwise. So the errors are fine, but the TSC emit is not yet something another tool can reproduce.

As we discussed though for 5.5 emit will not yet be fully aligned with what another tool can reproduce, so this ticket should be deferred for 5.6

from typescript.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.