prettier/tests/flow/react/proptype_oneOf.js

88 lines
2.0 KiB
JavaScript

/* @flow */
var React = require('react');
var Example = React.createClass({
propTypes: {
str: React.PropTypes.oneOf(["foo", "bar"]),
num: React.PropTypes.oneOf([0, 1, 2]),
bool: React.PropTypes.oneOf([true]),
mixed: React.PropTypes.oneOf(["foo", 0, true]),
},
});
(<Example str="foo" />); // OK
(<Example str="baz" />); // error: 'baz' not in enum
(<Example num={0} />); // OK
(<Example num={3} />); // error: 3 not in enum
(<Example bool={true} />); // OK
(<Example bool={false} />); // error: false ~> true
(<Example mixed={"foo"} />); // OK
(<Example mixed={0} />); // OK
(<Example mixed={"baz"} />); // error: 'baz' not in enum
var RequiredExample = React.createClass({
propTypes: {
p: React.PropTypes.oneOf([]).isRequired,
},
});
(<RequiredExample />); // error: `p` not found
var EmptyExample = React.createClass({
propTypes: {
nil: React.PropTypes.oneOf([]), // i.e., `empty`
},
});
(<EmptyExample nil={0} />); // number ~> empty
var AnyArrayExample = React.createClass({
propTypes: {
any: React.PropTypes.oneOf((0:any)),
},
});
(<AnyArrayExample any={0} />); // OK
var AnyElemExample = React.createClass({
propTypes: {
any: React.PropTypes.oneOf(["foo", (0:any)]),
},
});
(<AnyElemExample any={0} />); // OK
var DynamicArrayExample = React.createClass({
propTypes: {
dyn: React.PropTypes.oneOf(([]: Array<string>)),
},
});
(<DynamicArrayExample dyn={0} />); // OK
var DynamicElemExample = React.createClass({
propTypes: {
dyn: React.PropTypes.oneOf(["foo", ("": string)]),
},
});
(<DynamicElemExample dyn={0} />); // OK
var InvalidArrayExample = React.createClass({
propTypes: {
p: React.PropTypes.oneOf(0), // error: expected array, got 0
},
});
(<InvalidArrayExample p={0} />); // OK, don't cascade errors
var NonLiteralElemExample = React.createClass({
propTypes: {
p: React.PropTypes.oneOf([{}]), // OK: allow non-literals
},
});
(<NonLiteralElemExample p={0} />); // OK, result is unknown/any