Comments (7)
The error comes from this function here:
// tcomb/index.js:125:13
function assert(guard, message) {
if (guard !== true) {
if (isFunction(message)) { // handle lazy messages
message = message();
}
else if (isNil(message)) { // use a default message
message = 'Assert failed (turn on "Pause on exceptions" in your Source panel)';
}
exports.fail(message);
}
}
But not sure how it decides the guard
has failed.
from babel-plugin-tcomb.
When the assert fails, does args
contain an instance of pipe_args_t
?
A function like this:
function f(args: pipe_args_t) => {
...
}
will be transformed by the plugin to:
function f(args: pipe_args_t) => {
t.assert(pipe_args_t.is(args)); // <= args here must be an instance of pipe_args_t
...
}
from babel-plugin-tcomb.
Yup, there is an instance of pipe_args_t
in there. The problem is this returns false:
pipe_args_t.is({query: {a: 1})
Do I need to ensure the args
is wrapped in a struct?
from babel-plugin-tcomb.
pipe_args_t.is({query: {a: 1}); // false, {query: {a: 1} is not an instanceof pipe_args_t
pipe_args_t.is(new pipe_args_t({query: {a: 1})); // true
from babel-plugin-tcomb.
I mean: in tcomb
, if S
is a struct S.is(x)
returns true
if and only if x instanceof S
is true
from babel-plugin-tcomb.
Gotcha. It would be sweet if the plugin automatically wrapped the objects in a struct somehow, so I wouldn't have to worry about doing this everywhere, but I would understand if this is not in the scope.
from babel-plugin-tcomb.
That would couple your code with babel-plugin-tcomb
: in the production build you may want to remove the plugin (and its overhead) from the workflow.
import t from 'tcomb'
const Person = t.struct({
name: t.String,
surname: t.String
})
Person.prototype.getFullName = function getFullName() {
return `${this.name} ${this.surname}`
}
function greetings(person: Person) {
return `Hello ${person.getFullName()}`
}
greetings({name: 'Giulio', surname: 'Canti'}) // <= this would work in development, but throws in production!!!
from babel-plugin-tcomb.
Related Issues (20)
- Refinements example HOT 6
- Typechecking flow's inferred types
- Generator types
- Why generics are not supported
- arguments is not carried across during return type check
- Redux actions with constant string values
- Checking return value of generator function breaks the code HOT 2
- Working with Meteor's new reify HOT 1
- "ReactClass is not defined" error HOT 2
- Cannot set up for ReactNative project HOT 2
- support for argument spread
- add meta object for class?
- Add support for object type spread HOT 11
- tcomb crashes when there are circular "import type" HOT 4
- inspecting function argument and return types
- Adding Custom Error Message to Flow-typed Refinement?
- babel 7 support HOT 3
- ReferenceError: $Values is not defined
- The $Call-way
- React Native: _t is not defined
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 babel-plugin-tcomb.