56 lines
1.1 KiB
JavaScript
56 lines
1.1 KiB
JavaScript
/* @flow */
|
||
|
||
function foo(text: string | number): string {
|
||
switch (typeof text) {
|
||
case 'string':
|
||
return text;
|
||
case 'number':
|
||
return text; // error, should return string
|
||
default:
|
||
return 'wat';
|
||
}
|
||
}
|
||
|
||
function bar(text: string | number): string {
|
||
switch (typeof text) {
|
||
case 'string':
|
||
return text[0];
|
||
default:
|
||
return (text++) + '';
|
||
}
|
||
}
|
||
|
||
function baz1(text: string | number): string {
|
||
switch (typeof text) {
|
||
case 'number':
|
||
case 'string':
|
||
return text[0]; // error, [0] on number
|
||
default:
|
||
return 'wat';
|
||
}
|
||
}
|
||
|
||
function baz2(text: string | number): string {
|
||
switch (typeof text) {
|
||
case 'string':
|
||
case 'number':
|
||
return text[0]; // error, [0] on number
|
||
default:
|
||
return 'wat';
|
||
}
|
||
}
|
||
|
||
function corge(text: string | number | Array<string>): string {
|
||
switch (typeof text) {
|
||
case 'object':
|
||
return text[0];
|
||
case 'string':
|
||
case 'number':
|
||
// using ++ since it isn't valid on arrays or strings.
|
||
// should only error for string since Array was filtered out.
|
||
return (text++) + '';
|
||
default:
|
||
return 'wat';
|
||
}
|
||
}
|