Comments (4)
@TClark1011 that's a fantastic solution for the issue with the generic. It won't solve the problem for all the functions that share this issue, but works for take
and takeLast
from types.
The problem you have called out is not isolated to take
and takeLast
. It's also true for any curried function like this where the generic is set within the return type
For whatever reason, when you have a return type that is more than a single possibility, generics on those get immediately evaluated. I have a whole write up on it here: #54
The flip side of your fix is you lose support for the overload xs: string
. However, I've been leaning more and more towards removing the extra overloads as my discussion suggests
Here are other alternatives that will solve you problem in the mean time: https://tsplay.dev/m0Voxw
from types.
My solution can still accommodate the string overload, we just have to add another signature for it, so the new declaration would look like this:
export function take<T>(n: number, xs: readonly T[]): T[];
export function take<T>(n:number): (xs: readonly T[]) => T[];
export function take(n: number, xs: string): string;
export function take(n:number): (xs: string) => string;
from types.
Okay I actually figured out a workaround that can handle both the string and array curried signature and allow the generic to be evaluated after the original call: https://tsplay.dev/N7QPGW
I understand this may not be the ideal solution, it was just an idea I had and thought it was worth mentioning.
from types.
Related Issues (20)
- Make `isNotNil` a type guard HOT 3
- pipe and useWith get ts error HOT 3
- Missing copyright notice HOT 2
- propEq type doesn't account for optional properties HOT 1
- groupBy returns a type that is not compatible with Object.entries HOT 16
- Issues with upgrading from 0.28.25 to 0.29.1 when using yarn PnP HOT 1
- Why is `ElementOf` so complex? HOT 1
- `filter` chooses wrong type overload when used with `map`. HOT 2
- @types/ramda failing under 5.4 HOT 3
- Symbol type is not filtered out of keys in types for fromPairs, keys, toPairs, and toPairsIn HOT 2
- [0.29.9] `pluck` inside `pipe` get ts error HOT 2
- Real world usage of omit is now awkward HOT 6
- 'Placeholder' is not assignable to parameter of type 'string | ((match: string, ...args: readonly any[]) => string)' in replace HOT 3
- `curry` no longer works with `map` HOT 2
- forEach requires type parameter HOT 2
- `groupBy` partial object creates issues with downstream usage. HOT 2
- Export isNotEmpty types as it is now part of ramda 0.30.0 HOT 1
- 0.30.0 lensProp type-check fail HOT 1
- ramda pick type inference is not correct HOT 1
- Typescript type inferencing 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 types.