Comments (6)
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.
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.
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.
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.
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.
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)
- TS 5.4.5: Return type for performance.getEntriesByType is inaccurate
- Lose generic when spreading `T | undefined` where T is a generic object type HOT 3
- [isolatedDeclarations][5.5] Optional parameter annotated with imported type has isolatedDeclarations error HOT 2
- Missing content in documentation FAQ section HOT 3
- Make property decorator fabrics share generics with corresponding methods HOT 2
- Generic type parameter not inferring properly HOT 1
- JSDoc `@private` on constructor without parameters is omitted in declaration files
- [API] Ability to check if a parameter is being passed to const type parameter
- Improve support for internal packages by resolving path aliases
- CommonJS globals permitted for ES module builds with no compiler error. HOT 4
- -
- Type predicate doesn't narrow down function overload (but assertion works) HOT 3
- Recursive type strangely resolved to never HOT 3
- [5.5 beta] The `moduleDetection` option is ignored for `verbatimModuleSyntax` error HOT 6
- [NewErrors] 5.5.0-dev.20240526 vs 5.4.5 HOT 63
- [ServerErrors][JavaScript] 5.5.0-dev.20240526 HOT 11
- [ServerErrors][TypeScript] 5.5.0-dev.20240526 HOT 20
- Type Error in Array.includes() method when the array contains only string keys
- Type Error in Array.includes() method when the array contains only string keys HOT 4
- Attribute and Method Visibility depending on generics in form of `private` return type HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typescript.