Comments (1)
I agree that | null
and ?
are sort of orthogonal, and probably there should be finer grained control here. Analogously, currently #[serde(skip_serializing_if = "...")]
only checks for Option::is_none
, because ts-rs's "optional" field simply means replacing an Option<T>
field with a T
field and slapping a ?
on it. This means that ts-rs doesn't emit ?
s for other skip_serializing_if
fields, because it can't know that they're on Option types.
I propose we replace this with two concepts: optional (?
), and nullable (| null
). By default Option<T>
produces a nullable field, and skip_serializing_if
always produces an optional field. We can even make it so that if it detects skip_serializing_if = "Option::is_none"
that it becomes optional and not nullable, which would make this proposal be a backwards-compatible extension of the current behavior.
I have a patch that does something sort of like this (main...petersn:ts-rs:optional-changes although it's mixed in with other changes), but I'm curious what the maintainers think is the right behavior here.
from ts-rs.
Related Issues (20)
- Allow non-TS types to be exported as any HOT 3
- Fields with `skip_deserializing` not getting exported? HOT 6
- Avoid using object union for serde enum serializing HOT 2
- Cant convert enum to enum
- prevent warning for deserialize_with- Require Option<T> value, where null == None HOT 1
- Feature Request l ESM .js extension HOT 2
- Exporting enum discriminants HOT 3
- Useless use of `vec!` HOT 1
- [Question] - How to Derive(ts) for Complex Data Structures from External Crates? #163 HOT 5
- Mismatch between `ts-rs`'s idea of `camelCase` and `serde`'s HOT 2
- Generate types on build HOT 1
- Make `Option` different in the struct HOT 2
- Import of type used in inlined generic type generated
- type override in enums only works with types implementing `Serialize` HOT 2
- Request: silently ignore werde alias
- Support the Result<V, E> type
- Optional fields with `#[serde(default)]` for deserialization HOT 3
- exporting generic type with do_export!() HOT 5
- Include `ObjectId` from `mongodb` HOT 2
- Add documentation to exported types
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 ts-rs.