Git Product home page Git Product logo

Comments (9)

arendjr avatar arendjr commented on August 25, 2024 1

This is implemented (with a bit different approach) in #19.

from ts-rs.

NyxCode avatar NyxCode commented on August 25, 2024

Yes, this should be possible.
It's currently implemented this way since this is the default behaviour of serde.
However, as you corrently pointed out, the current implementation of TS doesn't allow for this.

A possible solution would be to define a TSConfig struct

struct TSConfig {
    treat_option_as_optional: bool
}

which would be passed to TS::name and TS::inline.

Then, the proc macro, which generates a TS implementation for your type, could parse a #[ts(treat_option_as_optional)] attribute and pass the according TSConfig instance to the calls.

Alternatively, this could just be solved by introducing a crate feature, and conditionally change the implementation of TS for Option<T: TS> depending of it, but I think it'd be nicer if this could be done on a per-struct and per-field basis.

If you feel like it, you could give it a try - the code is not super complicated, and I'm always happy to help.

from ts-rs.

Roms1383 avatar Roms1383 commented on August 25, 2024

Thanks for your fast reply @NyxCode ! I actually agree with you about the implementation on a per-struct / per-field basis.

I would really like to give a try (never played with macro so far), I'll definitely get back to you but it's probably not gonna be soon since I'm quite busy at the moment.

from ts-rs.

Roms1383 avatar Roms1383 commented on August 25, 2024

Do you mean passing treat_option_as_optional directly to both TS::name and TS::inline or there's a way to retrieve it from inside the functions without adding an additional parameter ?

from ts-rs.

Roms1383 avatar Roms1383 commented on August 25, 2024

Ping me on Discord if needed : Roms1383#0211

from ts-rs.

NyxCode avatar NyxCode commented on August 25, 2024

I thought about creating a struct like TSConfig and passing that to the functions.
That would make it easy to add additional attributes in the future.

from ts-rs.

Roms1383 avatar Roms1383 commented on August 25, 2024

Ah yes but when I was looking at it, it seems that it would have to be added in many many functions, am I correct?
I'd be up for a chat if you want!

from ts-rs.

Roms1383 avatar Roms1383 commented on August 25, 2024

p.s : I haven't yet pushed any changes on the fork because it's kinda messy at the moment (still logging stuff here and there to get familiar with your implementation and macro intricacies 😅)

from ts-rs.

NyxCode avatar NyxCode commented on August 25, 2024

sure, feel free to add me on discord. your ID is broken, i think the last digit is missing.

NyxCode#1137

from ts-rs.

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.