Comments (17)
from wouter.
Thank you for explaining that, I got the idea. But it still sounds a bit weird to me, to be honest. I simply don't see any benefit of such an experiment. Maybe I don't understand something, but from my perspective, the project won't lose anything if you add the transpilation stage to it. Opposite, most likely the bundle size will be even smaller and the codebase will be more reliable and bullet-proof with TS. Both transpilation and build will be done automatically in CI pipelines anyway.
About the README you're right, it's better to mention that it needs to be compiled to ES5 because most of the projects are ignoring node_modules
folder on transpilation.
from wouter.
Alright, a few people have already been asking about the TS types. I've never worked with TS before, but I think I get the idea: we could add an index.d.ts
file to the package with type declarations. This is definitely something I'll need a help with. I'm going to add a "Help Needed" tag to this issue, so if someone wants to contribute this might be a good place to start.
from wouter.
Be careful with typings if your project is not written in typescript and you do not plan to use it in a TS project any time. The problem is that if your typings are not up to date with your project code, you will have bugs in here that you cant/wont fix on your own. This hinders development greatly.
I would keep typings out of any project that is not TS based. Creating a separate project for types (or have it managed in definitely typed) is a good way to get started.
from wouter.
Perhaps adding the typings to the larger typings library where contributors can maintain it?
from wouter.
Ok, so I checked the TypeScript docs, and seems like adding types to definitely-typed
is the most appropriate option. One thing I don't quite understand yet is how do I make sure the types correspond to the latest version of the library? Let's say I publish a new version to NPM, how do I make sure types in the repo are up to date?
Hope anyone could help me with that. Thanks!
from wouter.
Well, you would need to update the typings before you publish, or have somebody update them.
from wouter.
And how does this solve the problem that would not be available for the recent version?
from wouter.
from wouter.
This brings us back to my comment from above. If the author is not using TS for this project, it doesnt make sense to maintain typings here, since he would get the bugs assigned in this project and cannot take care of them. ¯\(ツ)/¯
from wouter.
Hey guys! I see quite a lot of people are interested in TS support. I think I could migrate it to TS and open a PR for that. @molefrog How do you feel about going to TS?
from wouter.
I would leave the migration to the author - if he even wants to. What does it help if its typed afterwards but he cannot maintain it anyore? :)
Seriously - the only sane way is putting types on definitely typed. And somebody who cares about TS needs to maintain it. Forever. If thats not possible, drop the idea completely.
from wouter.
Hey, @yurist38 I appreciate the enthusiasm, but I must say I kinda agree with @Paratron and don't think rewriting the entire library in TS is a wise decision.
When I was designing the library I wanted it to be as minimal as possible (no deps, no transpilation). That's said I intentionally left out some features from React Router, just to make it cover 95% of use cases. Rewriting it in TS would add some complexity that I really think we would benefit from.
Again, sorry for rejecting this, but what you can help with however is creating contributing to https://github.com/molefrog/wouter-types by adding index.d.ts
and later publishing it to definitely-typed. This is what I would need help with, since I'm not that familiar with TS world yet.
from wouter.
I don't really see a point why you are so scared by migrating to TS but no problem, it's completely up to you though.
from wouter.
This might not be the best explanation, but I just thought I should share this just to explain why exactly I'm leaning towards having everything in js. I have this little mental conflict in my head 🙈:
I'm afraid of having a transpilation stage. This whole library was sort of an experiment around an idea that we can easily publish modern frontend libraries as-is, no babel, no transpilation, just plain ES6 (that's right) modules. An ES6 (ex ES2015) is currently fully supported by the majority of browsers, so ideally it should be up to a library consumer to decide whether or not this should be transpiled. That being said, if someone wants to support IE11 in their project, they should be aware that the transpilation stage needs to be enabled for node_modules
as well. See this convo #10 for more info.
I should probably let people know in advance before they start using the library about this approach in the README.
So I know it's not entirely related, but having ts source will force us to introduce the transpilation (ts -> js) before publishing, and this just kinda breaks the concept 😊
Again, sorry for being stubborn, hope you get the idea!
from wouter.
Hey, @mcongy, I added type definitions to DefinitelyTyped repo. npm i --save @types/wouter
from wouter.
@StrayFromThePath Thanks a lot for the help, appreciate that. I have added a section in README covering the TypeScript support:
https://github.com/molefrog/wouter/blob/master/README.md#can-i-use-wouter-in-my-typescript-project
from wouter.
Related Issues (20)
- `useSearch` does not work in SSR HOT 5
- `use-browser-location` HOT 2
- React is not re-rendeing page when there is query param change HOT 5
- V3: `memory-location` HOT 1
- V3: Refactor types for location hooks HOT 1
- Decoding URL params HOT 4
- `useSearchParams` for extracting and modifying search parameters HOT 10
- Should `useSearch` contain `?` character? HOT 1
- Route not accessible from multiple routers with different base HOT 1
- Bun install invalid hook call HOT 4
- Router don't work with Preact (10.18.1) HOT 3
- wouter-preact: Params with typescript? HOT 2
- How to add params in a nesting route? HOT 3
- v2.12.1 npm package is out of sync with v2.12.1 tag HOT 1
- v3.0.0-rc.1: When use hash router, Ctrl+click on <Link>, new window is opened with wrong url HOT 3
- Potential `useSearch` bug not triggering updates when used with `urql` HOT 9
- [Bug] Can't match default <Route>Not found</Route> when Router inside Switch HOT 3
- (?) Hash routing with no prefix slash index.html#/example/path/ HOT 3
- useSearch unsafe parameter decoding HOT 3
- v3.0.0-rc.2 decodeUriComponent is called before route match, breaking links with urlencoded slash (%2F) HOT 2
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 wouter.