Comments (2)
This is not specific to generator functions. It's related to inferring type parameters from unannotated parameters with inferred types from initializers (TS playground):
declare function fnDerive<A extends unknown[]>(fn: (...args: A) => void): A;
const result = fnDerive(function (a = 0, b = "") {});
// ^? const result: [a?: unknown, b?: unknown]
declare function fnDerive2<A, B>(fn: (a: A, b: B) => void): [A, B];
const result2 = fnDerive2(function (a = 0, b = "") {});
// ^? const result2: [unknown, unknown]
It's also just related to how there is a contextual signature available here. This touched on what I improved here: #56506 . This PR didn't break it anyhow when it comes to the case presented here but it also didn't improve it.
So the question here is also - how both situations should be differentiated? There are situations in which the contextual parameter type should be preferred. Perhaps it could be done based on checkMode & CheckMode.Inferential
, or maybe based on the uninstantiated contextual signature when the parameter's type is a type variable.
I'd love to experiment with this but I have a long list of things to experiment with so no promises 😅
from typescript.
This is not specific to generator functions.
Updated title and search terms to reflect this~
from typescript.
Related Issues (20)
- Number.prototype.toFixed, Number.prototype.toExponential,Number.prototype.toPrecision comments error HOT 3
- Newly introduced type narrowing via discriminators on .filter does not work in this case HOT 9
- Long running encodedSemanticClassifications-full request HOT 3
- 5.6.0 regression: Incorrect param type inference for type with all optional props HOT 6
- Make type narrowing for destructured discriminated unions work for more types HOT 1
- Design Meeting Notes, 8/16/2024 HOT 3
- Inheriting from 21 combined mixins causes "type instantiation is excessively deep and possibly infinite" HOT 5
- `void` is treated as covariant with everything when overriding a method from a base class HOT 2
- Type Instantiation is Excessively Deep Regression In #56004
- Signatures with less parameters aren't assignable to compatible targets with more when their rest param is an instantiated `NoInfer`
- Enable JSX.Element to be checked based on the element type HOT 2
- [NewErrors] 5.6.0-dev.20240818 vs 5.5.4 HOT 73
- Add `--strictObjectIterables` (bikeshed): exclude primitive (`string`) from `Iterable` types HOT 3
- [ServerErrors][JavaScript] 5.6.0-dev.20240818 vs 5.5.4 HOT 7
- [ServerErrors][TypeScript] 5.6.0-dev.20240818 vs 5.5.4 HOT 15
- `getTextOfJSDocComment` introduces a space in JSDoc comments HOT 1
- [tsserver] Make "configure excludes" warning more debuggable HOT 1
- Module resolution: Named imports not supported with import attributes HOT 1
- Pasting is broken HOT 1
- Intellisense doesn't show type info about array index access on hover HOT 1
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.