Comments (5)
I had not thought about using the definitions in vanilla js.
For typescript, I felt like the consensous was that modules should be prefered over ambient defnintions.
Is the only difference the declare
instead of export
, or are there other differences besides that?
from ts-rs.
For my use case, the only difference is the word declare.
It makes sense why the modules would be preferred, but when dealing with A library that just dumps its content globally or when dealing with JavaScript that doesn't have those import semantics built in (for older versions) it can be nice to have the option to use ambient declarations over the module system.
from ts-rs.
Hey, I just added support for this in the support-declare
branch.
/// By default, `export!` always uses `export type/interface`.
/// If you wish, you can also use ambient declarations (`declare type/interface`):
use ts_rs::{export, TS};
#[derive(TS)] struct Declared;
#[derive(TS)] struct Normal(Declared);
export! {
(declare) Declared => "bindings/declared.d.ts",
Normal => "bindings/normal.ts"
}
/// Since `Declared` is now an ambient declaration, `bindings/normal.ts` will not include an import
/// for `bindings/declared.d.ts`.
I'd appreciate if you could give it a try before I publish it to crates.io.
ts-rs = { git = "https://github.com/Aleph-Alpha/ts-rs", branch = "support-declare" }
from ts-rs.
It looks to work perfectly! I will let you know if anything comes up with it, but from my initial probing, it looks really good. Thanks for your work on this!
from ts-rs.
merged & published version 3.0.0
from ts-rs.
Related Issues (20)
- bug: Using `#[ts(rename_all = "...")]` `snake_case`, `SCREAMING_SNAKE_CASE` and `kebab-case` is not compatible with serde
- Randomly failing `imports` test HOT 1
- Unqualified call to `Self::name()`
- `usize` and `isize` should be typed as `bigint` on 64-bit architectures HOT 6
- Feature request: `serde-wasm-bindgen` compatibility. HOT 5
- Feature request: How to export multiple types to the same file HOT 4
- Feature request: Typed array types HOT 3
- bug: Tuples cause imports to be missed HOT 5
- bug: files are missing final newlines
- bug: `export::path:absolute` function fails when `TS_RS_EXPORT_DIR` is set to an absolute path and the `path_bug` test is executed
- bug: TS generated tests fail on struct with `serde_json::Value` type when running `cargo test`. HOT 2
- `ts(optional)` should be working on any which has `skip_serializing_if` HOT 1
- Add all of `ts(function)` to docs. HOT 2
- publish release please HOT 5
- Use std::path::absolute HOT 2
- Feature request: allow method of including `[propName: string]: any` to type HOT 15
- Question to recent change `Records<K, V>` to `{ [key: K]: V }`
- `parse_docs` doesn't handle block doc comments properly
- bug: complex nested (and flattened) enum type produces invalid syntax HOT 1
- Dependency paths in Windows use back slash, though they should use the canonical forward slash 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 ts-rs.