Coder Social home page Coder Social logo

Comments (17)

nksfrank avatar nksfrank commented on May 1, 2024 1

from wouter.

yurist38 avatar yurist38 commented on May 1, 2024 1

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.

molefrog avatar molefrog commented on May 1, 2024

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.

Paratron avatar Paratron commented on May 1, 2024

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.

nksfrank avatar nksfrank commented on May 1, 2024

Perhaps adding the typings to the larger typings library where contributors can maintain it?

from wouter.

molefrog avatar molefrog commented on May 1, 2024

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.

Paratron avatar Paratron commented on May 1, 2024

Well, you would need to update the typings before you publish, or have somebody update them.

from wouter.

Paratron avatar Paratron commented on May 1, 2024

And how does this solve the problem that would not be available for the recent version?

from wouter.

nksfrank avatar nksfrank commented on May 1, 2024

from wouter.

Paratron avatar Paratron commented on May 1, 2024

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.

yurist38 avatar yurist38 commented on May 1, 2024

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.

Paratron avatar Paratron commented on May 1, 2024

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.

molefrog avatar molefrog commented on May 1, 2024

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.

yurist38 avatar yurist38 commented on May 1, 2024

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.

molefrog avatar molefrog commented on May 1, 2024

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.

alex-tolkunov avatar alex-tolkunov commented on May 1, 2024

Hey, @mcongy, I added type definitions to DefinitelyTyped repo. npm i --save @types/wouter

from wouter.

molefrog avatar molefrog commented on May 1, 2024

@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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.