Open anyon17 opened 1 week ago
Here's an example for context
A class decorated with @json
, but not all fields implement the JSON Type
@json
class Foo {
public bar: string = "this is ok"
public baz: i32 | null = 0
// ^ this is not okay
}
Threw "unreachable" at runtime!
at 0:30 ...
This will fail miserably and throw something like "index out of range" or "unreachable" which are highly non-descriptive. Rather:
@json
class Foo {
public bar: string = "this is ok"
public baz: i32 | null = 0
// ^ this is not okay
}
ERROR: Property Foo.baz in <./src/index.ts> does not implement a JSON-compatible type!
Either decorate it with the `@omit` decorator or fix it!
Instead, we actually throw at COMPILE TIME to ensure that the user has fault tolerant code
Yeah that's perfectly put @JairusSW . Thanks for attaching the example to make the issue much clear.
Reopening this as there are a few bugs
@anyon17, after taking a closer look, it seems like to properly implement this (and a few other things), I'm going to have to take multiple passes over the AST via the transform. I'm not sure if your familiar with transforms, but its a pretty big undertaking, so I'll pull some features out and release a non-feature-complete version that's stable. This means I'll add full type checking in a later release. I'm still going to be working on this, just thought I'd let you know it may take a bit longer.
Right now a class decorated with
@json
containing fields which might not have types whose declaration have@json
decorator panics at the runtime. Is there any way to have this check at compile time so that compiler can exactly point to the field which does not have@json
decorator in it's declaration.