Comments (6)
🤦 I had TS 3 running in PyCharm in my project... that's why it worked in your project... cause it picked up the right version. Easy fix. Sorry for the distraction.
from constate.
This should work. Can you create a CodeSandbox demonstrating the issue?
from constate.
https://codesandbox.io/s/constatetypeinference-eheo9
Hmm it works there... and it works in VS Code... damn maybe a Jetbrains bug. Are you using like a really new TS feature or something?
from constate.
I made a Jetbrains issue: https://youtrack.jetbrains.com/issue/WEB-51538
if you can provide any additional context or guesses on that ticket please feel free. My guess is they have to update their TS service or you used some TS 4 feature that PyCharm has trouble with (but not sure why if they use the right TS service).
from constate.
Ok so not sure if you are open to this, but if you rewrite the types like this, then it works in PyCharm and VS Code, IMO it's a bit cleaner too :)
import * as React from "react";
declare type Selector<Value> = (value: Value) => any;
declare type SelectorHooks<Selectors> = {
[K in keyof Selectors]: () => Selectors[K] extends (...args: any) => infer R ? R : never;
};
// Here's the change...
// Removed the Hooks type and just did the `extends` check right here
declare type ConstateTuple<Props, Value, Selectors extends Selector<Value>[]> = Selectors["length"] extends 0
? [React.FC<Props>, () => Value]
: [React.FC<Props>, ...SelectorHooks<Selectors>];
declare function constate<Props, Value, Selectors extends Selector<Value>[]>(useValue: (props: Props) => Value, ...selectors: Selectors): ConstateTuple<Props, Value, Selectors>;
export default constate;
from constate.
Hmm ok that was when I just hacked them real quick from the node_modules folder... but I've got a fork of constate open and I'm having trouble getting the types to behave...
Oddly, the types are working properly in PyCharm when I am in YOUR project's index.ts file:
Maybe it's something to do with how the types were exported??
from constate.
Related Issues (20)
- Possible to do lazy splitting at time of hook usage? HOT 4
- Limit to the number of split values? HOT 2
- Accept generics in hook HOT 8
- Splitting ContextProvider definition from context value using part HOT 6
- Simple Package HOT 2
- Better Typescript types HOT 5
- Allow to invoke useCounter hook with arguments HOT 2
- Is it possible to have a ref to the Provider? HOT 5
- Demo for Complex Set State HOT 2
- How can i use overloading with constate? HOT 5
- How to pass props between nested providers HOT 1
- Mock initial state
- React Fast Refresh doesn't work on Constate side HOT 5
- Clarify that hooks are available in selector function HOT 4
- How to create selectors in order to listen on multiple changes in context's state? HOT 2
- When the selector returns an object, all components are re-rendered. HOT 2
- Migrate to GitHub actions
- How to access underling React.Context
- does constate support nested dynamic providers? 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 constate.