Tests for Conditional operator can generate union type
This commit is contained in:
parent
b66cd9b0fc
commit
24ebc750c0
|
@ -20,6 +20,7 @@ condBoolean ? exprBoolean1 : exprBoolean2;
|
|||
condBoolean ? exprNumber1 : exprNumber2;
|
||||
condBoolean ? exprString1 : exprString2;
|
||||
condBoolean ? exprIsObject1 : exprIsObject2;
|
||||
condBoolean ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is a boolean type literal
|
||||
true ? exprAny1 : exprAny2;
|
||||
|
@ -27,6 +28,7 @@ false ? exprBoolean1 : exprBoolean2;
|
|||
true ? exprNumber1 : exprNumber2;
|
||||
false ? exprString1 : exprString2;
|
||||
true ? exprIsObject1 : exprIsObject2;
|
||||
true ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is a boolean type expression
|
||||
!true ? exprAny1 : exprAny2;
|
||||
|
@ -34,6 +36,7 @@ typeof "123" == "string" ? exprBoolean1 : exprBoolean2;
|
|||
2 > 1 ? exprNumber1 : exprNumber2;
|
||||
null === undefined ? exprString1 : exprString2;
|
||||
true || false ? exprIsObject1 : exprIsObject2;
|
||||
null === undefined ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condBoolean ? exprAny1 : exprAny2;
|
||||
|
@ -41,18 +44,22 @@ var resultIsBoolean1 = condBoolean ? exprBoolean1 : exprBoolean2;
|
|||
var resultIsNumber1 = condBoolean ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condBoolean ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condBoolean ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condBoolean ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny2 = true ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = false ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = true ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = false ? exprString1 : exprString2;
|
||||
var resultIsObject2 = true ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = true ? exprString1 : exprBoolean1; // union
|
||||
var resultIsStringOrBoolean3 = false ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny3 = !true ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = typeof "123" == "string" ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = 2 > 1 ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = null === undefined ? exprString1 : exprString2;
|
||||
var resultIsObject3 = true || false ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean4 = typeof "123" === "string" ? exprString1 : exprBoolean1; // union
|
||||
|
||||
|
||||
//// [conditionalOperatorConditionIsBooleanType.js]
|
||||
|
@ -74,31 +81,38 @@ condBoolean ? exprBoolean1 : exprBoolean2;
|
|||
condBoolean ? exprNumber1 : exprNumber2;
|
||||
condBoolean ? exprString1 : exprString2;
|
||||
condBoolean ? exprIsObject1 : exprIsObject2;
|
||||
condBoolean ? exprString1 : exprBoolean1; // union
|
||||
//Cond is a boolean type literal
|
||||
true ? exprAny1 : exprAny2;
|
||||
false ? exprBoolean1 : exprBoolean2;
|
||||
true ? exprNumber1 : exprNumber2;
|
||||
false ? exprString1 : exprString2;
|
||||
true ? exprIsObject1 : exprIsObject2;
|
||||
true ? exprString1 : exprBoolean1; // union
|
||||
//Cond is a boolean type expression
|
||||
!true ? exprAny1 : exprAny2;
|
||||
typeof "123" == "string" ? exprBoolean1 : exprBoolean2;
|
||||
2 > 1 ? exprNumber1 : exprNumber2;
|
||||
null === undefined ? exprString1 : exprString2;
|
||||
true || false ? exprIsObject1 : exprIsObject2;
|
||||
null === undefined ? exprString1 : exprBoolean1; // union
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condBoolean ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean1 = condBoolean ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber1 = condBoolean ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condBoolean ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condBoolean ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condBoolean ? exprString1 : exprBoolean1; // union
|
||||
var resultIsAny2 = true ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = false ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = true ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = false ? exprString1 : exprString2;
|
||||
var resultIsObject2 = true ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = true ? exprString1 : exprBoolean1; // union
|
||||
var resultIsStringOrBoolean3 = false ? exprString1 : exprBoolean1; // union
|
||||
var resultIsAny3 = !true ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = typeof "123" == "string" ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = 2 > 1 ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = null === undefined ? exprString1 : exprString2;
|
||||
var resultIsObject3 = true || false ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean4 = typeof "123" === "string" ? exprString1 : exprBoolean1; // union
|
||||
|
|
|
@ -66,6 +66,12 @@ condBoolean ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
condBoolean ? exprString1 : exprBoolean1; // union
|
||||
>condBoolean ? exprString1 : exprBoolean1 : string | boolean
|
||||
>condBoolean : boolean
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Cond is a boolean type literal
|
||||
true ? exprAny1 : exprAny2;
|
||||
>true ? exprAny1 : exprAny2 : any
|
||||
|
@ -92,6 +98,11 @@ true ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
true ? exprString1 : exprBoolean1; // union
|
||||
>true ? exprString1 : exprBoolean1 : string | boolean
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Cond is a boolean type expression
|
||||
!true ? exprAny1 : exprAny2;
|
||||
>!true ? exprAny1 : exprAny2 : any
|
||||
|
@ -125,6 +136,13 @@ true || false ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
null === undefined ? exprString1 : exprBoolean1; // union
|
||||
>null === undefined ? exprString1 : exprBoolean1 : string | boolean
|
||||
>null === undefined : boolean
|
||||
>undefined : undefined
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condBoolean ? exprAny1 : exprAny2;
|
||||
>resultIsAny1 : any
|
||||
|
@ -161,6 +179,13 @@ var resultIsObject1 = condBoolean ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean1 = condBoolean ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean1 : string | boolean
|
||||
>condBoolean ? exprString1 : exprBoolean1 : string | boolean
|
||||
>condBoolean : boolean
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsAny2 = true ? exprAny1 : exprAny2;
|
||||
>resultIsAny2 : any
|
||||
>true ? exprAny1 : exprAny2 : any
|
||||
|
@ -191,6 +216,18 @@ var resultIsObject2 = true ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean2 = true ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean2 : string | boolean
|
||||
>true ? exprString1 : exprBoolean1 : string | boolean
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsStringOrBoolean3 = false ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean3 : string | boolean
|
||||
>false ? exprString1 : exprBoolean1 : string | boolean
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsAny3 = !true ? exprAny1 : exprAny2;
|
||||
>resultIsAny3 : any
|
||||
>!true ? exprAny1 : exprAny2 : any
|
||||
|
@ -228,3 +265,11 @@ var resultIsObject3 = true || false ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean4 = typeof "123" === "string" ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean4 : string | boolean
|
||||
>typeof "123" === "string" ? exprString1 : exprBoolean1 : string | boolean
|
||||
>typeof "123" === "string" : boolean
|
||||
>typeof "123" : string
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ condNumber ? exprBoolean1 : exprBoolean2;
|
|||
condNumber ? exprNumber1 : exprNumber2;
|
||||
condNumber ? exprString1 : exprString2;
|
||||
condNumber ? exprIsObject1 : exprIsObject2;
|
||||
condNumber ? exprString1 : exprBoolean1; // Union
|
||||
|
||||
//Cond is a number type literal
|
||||
1 ? exprAny1 : exprAny2;
|
||||
|
@ -27,6 +28,7 @@ condNumber ? exprIsObject1 : exprIsObject2;
|
|||
0.123456789 ? exprNumber1 : exprNumber2;
|
||||
- 10000000000000 ? exprString1 : exprString2;
|
||||
1000000000000 ? exprIsObject1 : exprIsObject2;
|
||||
10000 ? exprString1 : exprBoolean1; // Union
|
||||
|
||||
//Cond is a number type expression
|
||||
function foo() { return 1 };
|
||||
|
@ -37,6 +39,7 @@ var array = [1, 2, 3];
|
|||
"string".length ? exprNumber1 : exprNumber2;
|
||||
foo() ? exprString1 : exprString2;
|
||||
foo() / array[1] ? exprIsObject1 : exprIsObject2;
|
||||
foo() ? exprString1 : exprBoolean1; // Union
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condNumber ? exprAny1 : exprAny2;
|
||||
|
@ -44,19 +47,21 @@ var resultIsBoolean1 = condNumber ? exprBoolean1 : exprBoolean2;
|
|||
var resultIsNumber1 = condNumber ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condNumber ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condNumber ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condNumber ? exprString1 : exprBoolean1; // Union
|
||||
|
||||
var resultIsAny2 = 1 ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = 0 ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = 0.123456789 ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = - 10000000000000 ? exprString1 : exprString2;
|
||||
var resultIsObject2 = 1000000000000 ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = 10000 ? exprString1 : exprBoolean1; // Union
|
||||
|
||||
var resultIsAny3 = 1 * 0 ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = 1 + 1 ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = "string".length ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = foo() ? exprString1 : exprString2;
|
||||
var resultIsObject3 = foo() / array[1] ? exprIsObject1 : exprIsObject2;
|
||||
|
||||
var resultIsStringOrBoolean3 = foo() / array[1] ? exprString1 : exprBoolean1; // Union
|
||||
|
||||
//// [conditionalOperatorConditionIsNumberType.js]
|
||||
//Cond ? Expr1 : Expr2, Cond is of number type, Expr1 and Expr2 have the same type
|
||||
|
@ -77,12 +82,14 @@ condNumber ? exprBoolean1 : exprBoolean2;
|
|||
condNumber ? exprNumber1 : exprNumber2;
|
||||
condNumber ? exprString1 : exprString2;
|
||||
condNumber ? exprIsObject1 : exprIsObject2;
|
||||
condNumber ? exprString1 : exprBoolean1; // Union
|
||||
//Cond is a number type literal
|
||||
1 ? exprAny1 : exprAny2;
|
||||
0 ? exprBoolean1 : exprBoolean2;
|
||||
0.123456789 ? exprNumber1 : exprNumber2;
|
||||
-10000000000000 ? exprString1 : exprString2;
|
||||
1000000000000 ? exprIsObject1 : exprIsObject2;
|
||||
10000 ? exprString1 : exprBoolean1; // Union
|
||||
//Cond is a number type expression
|
||||
function foo() {
|
||||
return 1;
|
||||
|
@ -94,19 +101,23 @@ var array = [1, 2, 3];
|
|||
"string".length ? exprNumber1 : exprNumber2;
|
||||
foo() ? exprString1 : exprString2;
|
||||
foo() / array[1] ? exprIsObject1 : exprIsObject2;
|
||||
foo() ? exprString1 : exprBoolean1; // Union
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condNumber ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean1 = condNumber ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber1 = condNumber ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condNumber ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condNumber ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condNumber ? exprString1 : exprBoolean1; // Union
|
||||
var resultIsAny2 = 1 ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = 0 ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = 0.123456789 ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = -10000000000000 ? exprString1 : exprString2;
|
||||
var resultIsObject2 = 1000000000000 ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = 10000 ? exprString1 : exprBoolean1; // Union
|
||||
var resultIsAny3 = 1 * 0 ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = 1 + 1 ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = "string".length ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = foo() ? exprString1 : exprString2;
|
||||
var resultIsObject3 = foo() / array[1] ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean3 = foo() / array[1] ? exprString1 : exprBoolean1; // Union
|
||||
|
|
|
@ -66,6 +66,12 @@ condNumber ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
condNumber ? exprString1 : exprBoolean1; // Union
|
||||
>condNumber ? exprString1 : exprBoolean1 : string | boolean
|
||||
>condNumber : number
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Cond is a number type literal
|
||||
1 ? exprAny1 : exprAny2;
|
||||
>1 ? exprAny1 : exprAny2 : any
|
||||
|
@ -93,6 +99,11 @@ condNumber ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
10000 ? exprString1 : exprBoolean1; // Union
|
||||
>10000 ? exprString1 : exprBoolean1 : string | boolean
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Cond is a number type expression
|
||||
function foo() { return 1 };
|
||||
>foo : () => number
|
||||
|
@ -137,6 +148,13 @@ foo() / array[1] ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
foo() ? exprString1 : exprBoolean1; // Union
|
||||
>foo() ? exprString1 : exprBoolean1 : string | boolean
|
||||
>foo() : number
|
||||
>foo : () => number
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condNumber ? exprAny1 : exprAny2;
|
||||
>resultIsAny1 : any
|
||||
|
@ -173,6 +191,13 @@ var resultIsObject1 = condNumber ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean1 = condNumber ? exprString1 : exprBoolean1; // Union
|
||||
>resultIsStringOrBoolean1 : string | boolean
|
||||
>condNumber ? exprString1 : exprBoolean1 : string | boolean
|
||||
>condNumber : number
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsAny2 = 1 ? exprAny1 : exprAny2;
|
||||
>resultIsAny2 : any
|
||||
>1 ? exprAny1 : exprAny2 : any
|
||||
|
@ -204,6 +229,12 @@ var resultIsObject2 = 1000000000000 ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean2 = 10000 ? exprString1 : exprBoolean1; // Union
|
||||
>resultIsStringOrBoolean2 : string | boolean
|
||||
>10000 ? exprString1 : exprBoolean1 : string | boolean
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsAny3 = 1 * 0 ? exprAny1 : exprAny2;
|
||||
>resultIsAny3 : any
|
||||
>1 * 0 ? exprAny1 : exprAny2 : any
|
||||
|
@ -245,3 +276,14 @@ var resultIsObject3 = foo() / array[1] ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean3 = foo() / array[1] ? exprString1 : exprBoolean1; // Union
|
||||
>resultIsStringOrBoolean3 : string | boolean
|
||||
>foo() / array[1] ? exprString1 : exprBoolean1 : string | boolean
|
||||
>foo() / array[1] : number
|
||||
>foo() : number
|
||||
>foo : () => number
|
||||
>array[1] : number
|
||||
>array : number[]
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ condObject ? exprBoolean1 : exprBoolean2;
|
|||
condObject ? exprNumber1 : exprNumber2;
|
||||
condObject ? exprString1 : exprString2;
|
||||
condObject ? exprIsObject1 : exprIsObject2;
|
||||
condObject ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is an object type literal
|
||||
((a: string) => a.length) ? exprAny1 : exprAny2;
|
||||
|
@ -30,6 +31,7 @@ condObject ? exprIsObject1 : exprIsObject2;
|
|||
({}) ? exprNumber1 : exprNumber2;
|
||||
({ a: 1, b: "s" }) ? exprString1 : exprString2;
|
||||
({ a: 1, b: "s" }) ? exprIsObject1 : exprIsObject2;
|
||||
({ a: 1, b: "s" }) ? exprString1: exprBoolean1; // union
|
||||
|
||||
//Cond is an object type expression
|
||||
foo() ? exprAny1 : exprAny2;
|
||||
|
@ -37,6 +39,7 @@ new Date() ? exprBoolean1 : exprBoolean2;
|
|||
new C() ? exprNumber1 : exprNumber2;
|
||||
C.doIt() ? exprString1 : exprString2;
|
||||
condObject.valueOf() ? exprIsObject1 : exprIsObject2;
|
||||
new Date() ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condObject ? exprAny1 : exprAny2;
|
||||
|
@ -44,18 +47,21 @@ var resultIsBoolean1 = condObject ? exprBoolean1 : exprBoolean2;
|
|||
var resultIsNumber1 = condObject ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condObject ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condObject ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condObject ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny2 = ((a: string) => a.length) ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = ((a: string) => a.length) ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = ({}) ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = ({ a: 1, b: "s" }) ? exprString1 : exprString2;
|
||||
var resultIsObject2 = ({ a: 1, b: "s" }) ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = ({ a: 1, b: "s" }) ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny3 = foo() ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = new Date() ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = new C() ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = C.doIt() ? exprString1 : exprString2;
|
||||
var resultIsObject3 = condObject.valueOf() ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean3 = C.doIt() ? exprString1 : exprBoolean1; // union
|
||||
|
||||
|
||||
//// [conditionalOperatorConditionIsObjectType.js]
|
||||
|
@ -86,31 +92,37 @@ condObject ? exprBoolean1 : exprBoolean2;
|
|||
condObject ? exprNumber1 : exprNumber2;
|
||||
condObject ? exprString1 : exprString2;
|
||||
condObject ? exprIsObject1 : exprIsObject2;
|
||||
condObject ? exprString1 : exprBoolean1; // union
|
||||
//Cond is an object type literal
|
||||
(function (a) { return a.length; }) ? exprAny1 : exprAny2;
|
||||
(function (a) { return a.length; }) ? exprBoolean1 : exprBoolean2;
|
||||
({}) ? exprNumber1 : exprNumber2;
|
||||
({ a: 1, b: "s" }) ? exprString1 : exprString2;
|
||||
({ a: 1, b: "s" }) ? exprIsObject1 : exprIsObject2;
|
||||
({ a: 1, b: "s" }) ? exprString1 : exprBoolean1; // union
|
||||
//Cond is an object type expression
|
||||
foo() ? exprAny1 : exprAny2;
|
||||
new Date() ? exprBoolean1 : exprBoolean2;
|
||||
new C() ? exprNumber1 : exprNumber2;
|
||||
C.doIt() ? exprString1 : exprString2;
|
||||
condObject.valueOf() ? exprIsObject1 : exprIsObject2;
|
||||
new Date() ? exprString1 : exprBoolean1; // union
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condObject ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean1 = condObject ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber1 = condObject ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condObject ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condObject ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condObject ? exprString1 : exprBoolean1; // union
|
||||
var resultIsAny2 = (function (a) { return a.length; }) ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = (function (a) { return a.length; }) ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = ({}) ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = ({ a: 1, b: "s" }) ? exprString1 : exprString2;
|
||||
var resultIsObject2 = ({ a: 1, b: "s" }) ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = ({ a: 1, b: "s" }) ? exprString1 : exprBoolean1; // union
|
||||
var resultIsAny3 = foo() ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = new Date() ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = new C() ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = C.doIt() ? exprString1 : exprString2;
|
||||
var resultIsObject3 = condObject.valueOf() ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean3 = C.doIt() ? exprString1 : exprBoolean1; // union
|
||||
|
|
|
@ -74,6 +74,12 @@ condObject ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
condObject ? exprString1 : exprBoolean1; // union
|
||||
>condObject ? exprString1 : exprBoolean1 : string | boolean
|
||||
>condObject : Object
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Cond is an object type literal
|
||||
((a: string) => a.length) ? exprAny1 : exprAny2;
|
||||
>((a: string) => a.length) ? exprAny1 : exprAny2 : any
|
||||
|
@ -122,6 +128,15 @@ condObject ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
({ a: 1, b: "s" }) ? exprString1: exprBoolean1; // union
|
||||
>({ a: 1, b: "s" }) ? exprString1: exprBoolean1 : string | boolean
|
||||
>({ a: 1, b: "s" }) : { a: number; b: string; }
|
||||
>{ a: 1, b: "s" } : { a: number; b: string; }
|
||||
>a : number
|
||||
>b : string
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Cond is an object type expression
|
||||
foo() ? exprAny1 : exprAny2;
|
||||
>foo() ? exprAny1 : exprAny2 : any
|
||||
|
@ -162,6 +177,13 @@ condObject.valueOf() ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
new Date() ? exprString1 : exprBoolean1; // union
|
||||
>new Date() ? exprString1 : exprBoolean1 : string | boolean
|
||||
>new Date() : Date
|
||||
>Date : { (): string; new (): Date; new (value: number): Date; new (value: string): Date; new (year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date; prototype: Date; parse(s: string): number; UTC(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; now(): number; }
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condObject ? exprAny1 : exprAny2;
|
||||
>resultIsAny1 : any
|
||||
|
@ -198,6 +220,13 @@ var resultIsObject1 = condObject ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean1 = condObject ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean1 : string | boolean
|
||||
>condObject ? exprString1 : exprBoolean1 : string | boolean
|
||||
>condObject : Object
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsAny2 = ((a: string) => a.length) ? exprAny1 : exprAny2;
|
||||
>resultIsAny2 : any
|
||||
>((a: string) => a.length) ? exprAny1 : exprAny2 : any
|
||||
|
@ -250,6 +279,16 @@ var resultIsObject2 = ({ a: 1, b: "s" }) ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean2 = ({ a: 1, b: "s" }) ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean2 : string | boolean
|
||||
>({ a: 1, b: "s" }) ? exprString1 : exprBoolean1 : string | boolean
|
||||
>({ a: 1, b: "s" }) : { a: number; b: string; }
|
||||
>{ a: 1, b: "s" } : { a: number; b: string; }
|
||||
>a : number
|
||||
>b : string
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsAny3 = foo() ? exprAny1 : exprAny2;
|
||||
>resultIsAny3 : any
|
||||
>foo() ? exprAny1 : exprAny2 : any
|
||||
|
@ -294,3 +333,13 @@ var resultIsObject3 = condObject.valueOf() ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean3 = C.doIt() ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean3 : string | boolean
|
||||
>C.doIt() ? exprString1 : exprBoolean1 : string | boolean
|
||||
>C.doIt() : void
|
||||
>C.doIt : () => void
|
||||
>C : typeof C
|
||||
>doIt : () => void
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ condAny ? exprBoolean1 : exprBoolean2;
|
|||
condAny ? exprNumber1 : exprNumber2;
|
||||
condAny ? exprString1 : exprString2;
|
||||
condAny ? exprIsObject1 : exprIsObject2;
|
||||
condAny ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is an any type literal
|
||||
null ? exprAny1 : exprAny2;
|
||||
|
@ -28,6 +29,7 @@ null ? exprBoolean1 : exprBoolean2;
|
|||
undefined ? exprNumber1 : exprNumber2;
|
||||
[null, undefined] ? exprString1 : exprString2;
|
||||
[null, undefined] ? exprIsObject1 : exprIsObject2;
|
||||
undefined ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is an any type expression
|
||||
x.doSomeThing() ? exprAny1 : exprAny2;
|
||||
|
@ -35,6 +37,7 @@ x("x") ? exprBoolean1 : exprBoolean2;
|
|||
x(x) ? exprNumber1 : exprNumber2;
|
||||
x("x") ? exprString1 : exprString2;
|
||||
x.doSomeThing() ? exprIsObject1 : exprIsObject2;
|
||||
x.doSomeThing() ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condAny ? exprAny1 : exprAny2;
|
||||
|
@ -42,19 +45,23 @@ var resultIsBoolean1 = condAny ? exprBoolean1 : exprBoolean2;
|
|||
var resultIsNumber1 = condAny ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condAny ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condAny ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condAny ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny2 = null ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = null ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = undefined ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = [null, undefined] ? exprString1 : exprString2;
|
||||
var resultIsObject2 = [null, undefined] ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = null ? exprString1 : exprBoolean1; // union
|
||||
var resultIsStringOrBoolean3 = undefined ? exprString1 : exprBoolean1; // union
|
||||
var resultIsStringOrBoolean4 = [null, undefined] ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny3 = x.doSomeThing() ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = x("x") ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = x(x) ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = x("x") ? exprString1 : exprString2;
|
||||
var resultIsObject3 = x.doSomeThing() ? exprIsObject1 : exprIsObject2;
|
||||
|
||||
var resultIsStringOrBoolean5 = x.doSomeThing() ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//// [conditionalOperatorConditoinIsAnyType.js]
|
||||
//Cond ? Expr1 : Expr2, Cond is of any type, Expr1 and Expr2 have the same type
|
||||
|
@ -76,31 +83,39 @@ condAny ? exprBoolean1 : exprBoolean2;
|
|||
condAny ? exprNumber1 : exprNumber2;
|
||||
condAny ? exprString1 : exprString2;
|
||||
condAny ? exprIsObject1 : exprIsObject2;
|
||||
condAny ? exprString1 : exprBoolean1; // union
|
||||
//Cond is an any type literal
|
||||
null ? exprAny1 : exprAny2;
|
||||
null ? exprBoolean1 : exprBoolean2;
|
||||
undefined ? exprNumber1 : exprNumber2;
|
||||
[null, undefined] ? exprString1 : exprString2;
|
||||
[null, undefined] ? exprIsObject1 : exprIsObject2;
|
||||
undefined ? exprString1 : exprBoolean1; // union
|
||||
//Cond is an any type expression
|
||||
x.doSomeThing() ? exprAny1 : exprAny2;
|
||||
x("x") ? exprBoolean1 : exprBoolean2;
|
||||
x(x) ? exprNumber1 : exprNumber2;
|
||||
x("x") ? exprString1 : exprString2;
|
||||
x.doSomeThing() ? exprIsObject1 : exprIsObject2;
|
||||
x.doSomeThing() ? exprString1 : exprBoolean1; // union
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condAny ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean1 = condAny ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber1 = condAny ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condAny ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condAny ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condAny ? exprString1 : exprBoolean1; // union
|
||||
var resultIsAny2 = null ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = null ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = undefined ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = [null, undefined] ? exprString1 : exprString2;
|
||||
var resultIsObject2 = [null, undefined] ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = null ? exprString1 : exprBoolean1; // union
|
||||
var resultIsStringOrBoolean3 = undefined ? exprString1 : exprBoolean1; // union
|
||||
var resultIsStringOrBoolean4 = [null, undefined] ? exprString1 : exprBoolean1; // union
|
||||
var resultIsAny3 = x.doSomeThing() ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = x("x") ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = x(x) ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = x("x") ? exprString1 : exprString2;
|
||||
var resultIsObject3 = x.doSomeThing() ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean5 = x.doSomeThing() ? exprString1 : exprBoolean1; // union
|
||||
|
|
|
@ -69,6 +69,12 @@ condAny ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
condAny ? exprString1 : exprBoolean1; // union
|
||||
>condAny ? exprString1 : exprBoolean1 : string | boolean
|
||||
>condAny : any
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Cond is an any type literal
|
||||
null ? exprAny1 : exprAny2;
|
||||
>null ? exprAny1 : exprAny2 : any
|
||||
|
@ -100,6 +106,12 @@ undefined ? exprNumber1 : exprNumber2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
undefined ? exprString1 : exprBoolean1; // union
|
||||
>undefined ? exprString1 : exprBoolean1 : string | boolean
|
||||
>undefined : undefined
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Cond is an any type expression
|
||||
x.doSomeThing() ? exprAny1 : exprAny2;
|
||||
>x.doSomeThing() ? exprAny1 : exprAny2 : any
|
||||
|
@ -141,6 +153,15 @@ x.doSomeThing() ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
x.doSomeThing() ? exprString1 : exprBoolean1; // union
|
||||
>x.doSomeThing() ? exprString1 : exprBoolean1 : string | boolean
|
||||
>x.doSomeThing() : any
|
||||
>x.doSomeThing : any
|
||||
>x : any
|
||||
>doSomeThing : any
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condAny ? exprAny1 : exprAny2;
|
||||
>resultIsAny1 : any
|
||||
|
@ -177,6 +198,13 @@ var resultIsObject1 = condAny ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean1 = condAny ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean1 : string | boolean
|
||||
>condAny ? exprString1 : exprBoolean1 : string | boolean
|
||||
>condAny : any
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsAny2 = null ? exprAny1 : exprAny2;
|
||||
>resultIsAny2 : any
|
||||
>null ? exprAny1 : exprAny2 : any
|
||||
|
@ -212,6 +240,27 @@ var resultIsObject2 = [null, undefined] ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean2 = null ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean2 : string | boolean
|
||||
>null ? exprString1 : exprBoolean1 : string | boolean
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsStringOrBoolean3 = undefined ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean3 : string | boolean
|
||||
>undefined ? exprString1 : exprBoolean1 : string | boolean
|
||||
>undefined : undefined
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsStringOrBoolean4 = [null, undefined] ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean4 : string | boolean
|
||||
>[null, undefined] ? exprString1 : exprBoolean1 : string | boolean
|
||||
>[null, undefined] : null[]
|
||||
>undefined : undefined
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsAny3 = x.doSomeThing() ? exprAny1 : exprAny2;
|
||||
>resultIsAny3 : any
|
||||
>x.doSomeThing() ? exprAny1 : exprAny2 : any
|
||||
|
@ -257,3 +306,13 @@ var resultIsObject3 = x.doSomeThing() ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean5 = x.doSomeThing() ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean5 : string | boolean
|
||||
>x.doSomeThing() ? exprString1 : exprBoolean1 : string | boolean
|
||||
>x.doSomeThing() : any
|
||||
>x.doSomeThing : any
|
||||
>x : any
|
||||
>doSomeThing : any
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ condString ? exprBoolean1 : exprBoolean2;
|
|||
condString ? exprNumber1 : exprNumber2;
|
||||
condString ? exprString1 : exprString2;
|
||||
condString ? exprIsObject1 : exprIsObject2;
|
||||
condString ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is a string type literal
|
||||
"" ? exprAny1 : exprAny2;
|
||||
|
@ -27,6 +28,7 @@ condString ? exprIsObject1 : exprIsObject2;
|
|||
'c' ? exprNumber1 : exprNumber2;
|
||||
'string' ? exprString1 : exprString2;
|
||||
" " ? exprIsObject1 : exprIsObject2;
|
||||
"hello " ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is a string type expression
|
||||
function foo() { return "string" };
|
||||
|
@ -37,6 +39,7 @@ condString.toUpperCase ? exprBoolean1 : exprBoolean2;
|
|||
condString + "string" ? exprNumber1 : exprNumber2;
|
||||
foo() ? exprString1 : exprString2;
|
||||
array[1] ? exprIsObject1 : exprIsObject2;
|
||||
foo() ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condString ? exprAny1 : exprAny2;
|
||||
|
@ -44,19 +47,22 @@ var resultIsBoolean1 = condString ? exprBoolean1 : exprBoolean2;
|
|||
var resultIsNumber1 = condString ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condString ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condString ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condString ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny2 = "" ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = "string" ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = 'c' ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = 'string' ? exprString1 : exprString2;
|
||||
var resultIsObject2 = " " ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = "hello" ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny3 = typeof condString ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = condString.toUpperCase ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = condString + "string" ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = foo() ? exprString1 : exprString2;
|
||||
var resultIsObject3 = array[1] ? exprIsObject1 : exprIsObject2;
|
||||
|
||||
var resultIsStringOrBoolean3 = typeof condString ? exprString1 : exprBoolean1; // union
|
||||
var resultIsStringOrBoolean4 = condString.toUpperCase ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//// [conditionalOperatorConditoinIsStringType.js]
|
||||
//Cond ? Expr1 : Expr2, Cond is of string type, Expr1 and Expr2 have the same type
|
||||
|
@ -77,12 +83,14 @@ condString ? exprBoolean1 : exprBoolean2;
|
|||
condString ? exprNumber1 : exprNumber2;
|
||||
condString ? exprString1 : exprString2;
|
||||
condString ? exprIsObject1 : exprIsObject2;
|
||||
condString ? exprString1 : exprBoolean1; // union
|
||||
//Cond is a string type literal
|
||||
"" ? exprAny1 : exprAny2;
|
||||
"string" ? exprBoolean1 : exprBoolean2;
|
||||
'c' ? exprNumber1 : exprNumber2;
|
||||
'string' ? exprString1 : exprString2;
|
||||
" " ? exprIsObject1 : exprIsObject2;
|
||||
"hello " ? exprString1 : exprBoolean1; // union
|
||||
//Cond is a string type expression
|
||||
function foo() {
|
||||
return "string";
|
||||
|
@ -94,19 +102,24 @@ condString.toUpperCase ? exprBoolean1 : exprBoolean2;
|
|||
condString + "string" ? exprNumber1 : exprNumber2;
|
||||
foo() ? exprString1 : exprString2;
|
||||
array[1] ? exprIsObject1 : exprIsObject2;
|
||||
foo() ? exprString1 : exprBoolean1; // union
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condString ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean1 = condString ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber1 = condString ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condString ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condString ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condString ? exprString1 : exprBoolean1; // union
|
||||
var resultIsAny2 = "" ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = "string" ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = 'c' ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = 'string' ? exprString1 : exprString2;
|
||||
var resultIsObject2 = " " ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = "hello" ? exprString1 : exprBoolean1; // union
|
||||
var resultIsAny3 = typeof condString ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = condString.toUpperCase ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = condString + "string" ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = foo() ? exprString1 : exprString2;
|
||||
var resultIsObject3 = array[1] ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean3 = typeof condString ? exprString1 : exprBoolean1; // union
|
||||
var resultIsStringOrBoolean4 = condString.toUpperCase ? exprString1 : exprBoolean1; // union
|
||||
|
|
|
@ -66,6 +66,12 @@ condString ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
condString ? exprString1 : exprBoolean1; // union
|
||||
>condString ? exprString1 : exprBoolean1 : string | boolean
|
||||
>condString : string
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Cond is a string type literal
|
||||
"" ? exprAny1 : exprAny2;
|
||||
>"" ? exprAny1 : exprAny2 : any
|
||||
|
@ -92,6 +98,11 @@ condString ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
"hello " ? exprString1 : exprBoolean1; // union
|
||||
>"hello " ? exprString1 : exprBoolean1 : string | boolean
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Cond is a string type expression
|
||||
function foo() { return "string" };
|
||||
>foo : () => string
|
||||
|
@ -136,6 +147,13 @@ array[1] ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
foo() ? exprString1 : exprBoolean1; // union
|
||||
>foo() ? exprString1 : exprBoolean1 : string | boolean
|
||||
>foo() : string
|
||||
>foo : () => string
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condString ? exprAny1 : exprAny2;
|
||||
>resultIsAny1 : any
|
||||
|
@ -172,6 +190,13 @@ var resultIsObject1 = condString ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean1 = condString ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean1 : string | boolean
|
||||
>condString ? exprString1 : exprBoolean1 : string | boolean
|
||||
>condString : string
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsAny2 = "" ? exprAny1 : exprAny2;
|
||||
>resultIsAny2 : any
|
||||
>"" ? exprAny1 : exprAny2 : any
|
||||
|
@ -202,6 +227,12 @@ var resultIsObject2 = " " ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean2 = "hello" ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean2 : string | boolean
|
||||
>"hello" ? exprString1 : exprBoolean1 : string | boolean
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsAny3 = typeof condString ? exprAny1 : exprAny2;
|
||||
>resultIsAny3 : any
|
||||
>typeof condString ? exprAny1 : exprAny2 : any
|
||||
|
@ -243,3 +274,20 @@ var resultIsObject3 = array[1] ? exprIsObject1 : exprIsObject2;
|
|||
>exprIsObject1 : Object
|
||||
>exprIsObject2 : Object
|
||||
|
||||
var resultIsStringOrBoolean3 = typeof condString ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean3 : string | boolean
|
||||
>typeof condString ? exprString1 : exprBoolean1 : string | boolean
|
||||
>typeof condString : string
|
||||
>condString : string
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
var resultIsStringOrBoolean4 = condString.toUpperCase ? exprString1 : exprBoolean1; // union
|
||||
>resultIsStringOrBoolean4 : string | boolean
|
||||
>condString.toUpperCase ? exprString1 : exprBoolean1 : string | boolean
|
||||
>condString.toUpperCase : () => string
|
||||
>condString : string
|
||||
>toUpperCase : () => string
|
||||
>exprString1 : string
|
||||
>exprBoolean1 : boolean
|
||||
|
||||
|
|
|
@ -4,13 +4,13 @@ tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithou
|
|||
tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(16,5): error TS2323: Type 'A | B' is not assignable to type 'B'.
|
||||
Type 'A' is not assignable to type 'B'.
|
||||
Property 'propertyB' is missing in type 'A'.
|
||||
tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(18,5): error TS2323: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => number'.
|
||||
tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(19,5): error TS2323: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => number'.
|
||||
Type '(n: X) => string' is not assignable to type '(t: X) => number'.
|
||||
Type 'string' is not assignable to type 'number'.
|
||||
tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(19,5): error TS2323: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => string'.
|
||||
tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(20,5): error TS2323: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => string'.
|
||||
Type '(m: X) => number' is not assignable to type '(t: X) => string'.
|
||||
Type 'number' is not assignable to type 'string'.
|
||||
tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(20,5): error TS2323: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => boolean'.
|
||||
tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(21,5): error TS2323: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => boolean'.
|
||||
Type '(m: X) => number' is not assignable to type '(t: X) => boolean'.
|
||||
Type 'number' is not assignable to type 'boolean'.
|
||||
|
||||
|
@ -40,6 +40,7 @@ tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithou
|
|||
!!! error TS2323: Type 'A | B' is not assignable to type 'B'.
|
||||
!!! error TS2323: Type 'A' is not assignable to type 'B'.
|
||||
!!! error TS2323: Property 'propertyB' is missing in type 'A'.
|
||||
var result31: A | B = true ? a : b;
|
||||
|
||||
var result4: (t: X) => number = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
||||
~~~~~~~
|
||||
|
@ -55,4 +56,6 @@ tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithou
|
|||
~~~~~~~
|
||||
!!! error TS2323: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => boolean'.
|
||||
!!! error TS2323: Type '(m: X) => number' is not assignable to type '(t: X) => boolean'.
|
||||
!!! error TS2323: Type 'number' is not assignable to type 'boolean'.
|
||||
!!! error TS2323: Type 'number' is not assignable to type 'boolean'.
|
||||
var result61: (t: X) => number| string = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
||||
|
|
@ -15,10 +15,13 @@ var result1 = true ? a : b;
|
|||
//Be contextually typed and and bct is not identical, results in errors that union type is not assignable to target
|
||||
var result2: A = true ? a : b;
|
||||
var result3: B = true ? a : b;
|
||||
var result31: A | B = true ? a : b;
|
||||
|
||||
var result4: (t: X) => number = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
||||
var result5: (t: X) => string = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
||||
var result6: (t: X) => boolean = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
||||
var result6: (t: X) => boolean = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
||||
var result61: (t: X) => number| string = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
||||
|
||||
|
||||
//// [conditionalOperatorWithoutIdenticalBCT.js]
|
||||
var __extends = this.__extends || function (d, b) {
|
||||
|
@ -59,6 +62,8 @@ var result1 = true ? a : b;
|
|||
//Be contextually typed and and bct is not identical, results in errors that union type is not assignable to target
|
||||
var result2 = true ? a : b;
|
||||
var result3 = true ? a : b;
|
||||
var result31 = true ? a : b;
|
||||
var result4 = true ? function (m) { return m.propertyX1; } : function (n) { return n.propertyX2; };
|
||||
var result5 = true ? function (m) { return m.propertyX1; } : function (n) { return n.propertyX2; };
|
||||
var result6 = true ? function (m) { return m.propertyX1; } : function (n) { return n.propertyX2; };
|
||||
var result61 = true ? function (m) { return m.propertyX1; } : function (n) { return n.propertyX2; };
|
||||
|
|
|
@ -19,6 +19,7 @@ condBoolean ? exprBoolean1 : exprBoolean2;
|
|||
condBoolean ? exprNumber1 : exprNumber2;
|
||||
condBoolean ? exprString1 : exprString2;
|
||||
condBoolean ? exprIsObject1 : exprIsObject2;
|
||||
condBoolean ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is a boolean type literal
|
||||
true ? exprAny1 : exprAny2;
|
||||
|
@ -26,6 +27,7 @@ false ? exprBoolean1 : exprBoolean2;
|
|||
true ? exprNumber1 : exprNumber2;
|
||||
false ? exprString1 : exprString2;
|
||||
true ? exprIsObject1 : exprIsObject2;
|
||||
true ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is a boolean type expression
|
||||
!true ? exprAny1 : exprAny2;
|
||||
|
@ -33,6 +35,7 @@ typeof "123" == "string" ? exprBoolean1 : exprBoolean2;
|
|||
2 > 1 ? exprNumber1 : exprNumber2;
|
||||
null === undefined ? exprString1 : exprString2;
|
||||
true || false ? exprIsObject1 : exprIsObject2;
|
||||
null === undefined ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condBoolean ? exprAny1 : exprAny2;
|
||||
|
@ -40,15 +43,19 @@ var resultIsBoolean1 = condBoolean ? exprBoolean1 : exprBoolean2;
|
|||
var resultIsNumber1 = condBoolean ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condBoolean ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condBoolean ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condBoolean ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny2 = true ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = false ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = true ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = false ? exprString1 : exprString2;
|
||||
var resultIsObject2 = true ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = true ? exprString1 : exprBoolean1; // union
|
||||
var resultIsStringOrBoolean3 = false ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny3 = !true ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = typeof "123" == "string" ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = 2 > 1 ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = null === undefined ? exprString1 : exprString2;
|
||||
var resultIsObject3 = true || false ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean4 = typeof "123" === "string" ? exprString1 : exprBoolean1; // union
|
||||
|
|
|
@ -19,6 +19,7 @@ condNumber ? exprBoolean1 : exprBoolean2;
|
|||
condNumber ? exprNumber1 : exprNumber2;
|
||||
condNumber ? exprString1 : exprString2;
|
||||
condNumber ? exprIsObject1 : exprIsObject2;
|
||||
condNumber ? exprString1 : exprBoolean1; // Union
|
||||
|
||||
//Cond is a number type literal
|
||||
1 ? exprAny1 : exprAny2;
|
||||
|
@ -26,6 +27,7 @@ condNumber ? exprIsObject1 : exprIsObject2;
|
|||
0.123456789 ? exprNumber1 : exprNumber2;
|
||||
- 10000000000000 ? exprString1 : exprString2;
|
||||
1000000000000 ? exprIsObject1 : exprIsObject2;
|
||||
10000 ? exprString1 : exprBoolean1; // Union
|
||||
|
||||
//Cond is a number type expression
|
||||
function foo() { return 1 };
|
||||
|
@ -36,6 +38,7 @@ var array = [1, 2, 3];
|
|||
"string".length ? exprNumber1 : exprNumber2;
|
||||
foo() ? exprString1 : exprString2;
|
||||
foo() / array[1] ? exprIsObject1 : exprIsObject2;
|
||||
foo() ? exprString1 : exprBoolean1; // Union
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condNumber ? exprAny1 : exprAny2;
|
||||
|
@ -43,15 +46,18 @@ var resultIsBoolean1 = condNumber ? exprBoolean1 : exprBoolean2;
|
|||
var resultIsNumber1 = condNumber ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condNumber ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condNumber ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condNumber ? exprString1 : exprBoolean1; // Union
|
||||
|
||||
var resultIsAny2 = 1 ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = 0 ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = 0.123456789 ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = - 10000000000000 ? exprString1 : exprString2;
|
||||
var resultIsObject2 = 1000000000000 ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = 10000 ? exprString1 : exprBoolean1; // Union
|
||||
|
||||
var resultIsAny3 = 1 * 0 ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = 1 + 1 ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = "string".length ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = foo() ? exprString1 : exprString2;
|
||||
var resultIsObject3 = foo() / array[1] ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean3 = foo() / array[1] ? exprString1 : exprBoolean1; // Union
|
|
@ -22,6 +22,7 @@ condObject ? exprBoolean1 : exprBoolean2;
|
|||
condObject ? exprNumber1 : exprNumber2;
|
||||
condObject ? exprString1 : exprString2;
|
||||
condObject ? exprIsObject1 : exprIsObject2;
|
||||
condObject ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is an object type literal
|
||||
((a: string) => a.length) ? exprAny1 : exprAny2;
|
||||
|
@ -29,6 +30,7 @@ condObject ? exprIsObject1 : exprIsObject2;
|
|||
({}) ? exprNumber1 : exprNumber2;
|
||||
({ a: 1, b: "s" }) ? exprString1 : exprString2;
|
||||
({ a: 1, b: "s" }) ? exprIsObject1 : exprIsObject2;
|
||||
({ a: 1, b: "s" }) ? exprString1: exprBoolean1; // union
|
||||
|
||||
//Cond is an object type expression
|
||||
foo() ? exprAny1 : exprAny2;
|
||||
|
@ -36,6 +38,7 @@ new Date() ? exprBoolean1 : exprBoolean2;
|
|||
new C() ? exprNumber1 : exprNumber2;
|
||||
C.doIt() ? exprString1 : exprString2;
|
||||
condObject.valueOf() ? exprIsObject1 : exprIsObject2;
|
||||
new Date() ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condObject ? exprAny1 : exprAny2;
|
||||
|
@ -43,15 +46,18 @@ var resultIsBoolean1 = condObject ? exprBoolean1 : exprBoolean2;
|
|||
var resultIsNumber1 = condObject ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condObject ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condObject ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condObject ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny2 = ((a: string) => a.length) ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = ((a: string) => a.length) ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = ({}) ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = ({ a: 1, b: "s" }) ? exprString1 : exprString2;
|
||||
var resultIsObject2 = ({ a: 1, b: "s" }) ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = ({ a: 1, b: "s" }) ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny3 = foo() ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = new Date() ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = new C() ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = C.doIt() ? exprString1 : exprString2;
|
||||
var resultIsObject3 = condObject.valueOf() ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean3 = C.doIt() ? exprString1 : exprBoolean1; // union
|
||||
|
|
|
@ -20,6 +20,7 @@ condAny ? exprBoolean1 : exprBoolean2;
|
|||
condAny ? exprNumber1 : exprNumber2;
|
||||
condAny ? exprString1 : exprString2;
|
||||
condAny ? exprIsObject1 : exprIsObject2;
|
||||
condAny ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is an any type literal
|
||||
null ? exprAny1 : exprAny2;
|
||||
|
@ -27,6 +28,7 @@ null ? exprBoolean1 : exprBoolean2;
|
|||
undefined ? exprNumber1 : exprNumber2;
|
||||
[null, undefined] ? exprString1 : exprString2;
|
||||
[null, undefined] ? exprIsObject1 : exprIsObject2;
|
||||
undefined ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is an any type expression
|
||||
x.doSomeThing() ? exprAny1 : exprAny2;
|
||||
|
@ -34,6 +36,7 @@ x("x") ? exprBoolean1 : exprBoolean2;
|
|||
x(x) ? exprNumber1 : exprNumber2;
|
||||
x("x") ? exprString1 : exprString2;
|
||||
x.doSomeThing() ? exprIsObject1 : exprIsObject2;
|
||||
x.doSomeThing() ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condAny ? exprAny1 : exprAny2;
|
||||
|
@ -41,15 +44,20 @@ var resultIsBoolean1 = condAny ? exprBoolean1 : exprBoolean2;
|
|||
var resultIsNumber1 = condAny ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condAny ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condAny ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condAny ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny2 = null ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = null ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = undefined ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = [null, undefined] ? exprString1 : exprString2;
|
||||
var resultIsObject2 = [null, undefined] ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = null ? exprString1 : exprBoolean1; // union
|
||||
var resultIsStringOrBoolean3 = undefined ? exprString1 : exprBoolean1; // union
|
||||
var resultIsStringOrBoolean4 = [null, undefined] ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny3 = x.doSomeThing() ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = x("x") ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = x(x) ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = x("x") ? exprString1 : exprString2;
|
||||
var resultIsObject3 = x.doSomeThing() ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean5 = x.doSomeThing() ? exprString1 : exprBoolean1; // union
|
|
@ -19,6 +19,7 @@ condString ? exprBoolean1 : exprBoolean2;
|
|||
condString ? exprNumber1 : exprNumber2;
|
||||
condString ? exprString1 : exprString2;
|
||||
condString ? exprIsObject1 : exprIsObject2;
|
||||
condString ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is a string type literal
|
||||
"" ? exprAny1 : exprAny2;
|
||||
|
@ -26,6 +27,7 @@ condString ? exprIsObject1 : exprIsObject2;
|
|||
'c' ? exprNumber1 : exprNumber2;
|
||||
'string' ? exprString1 : exprString2;
|
||||
" " ? exprIsObject1 : exprIsObject2;
|
||||
"hello " ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Cond is a string type expression
|
||||
function foo() { return "string" };
|
||||
|
@ -36,6 +38,7 @@ condString.toUpperCase ? exprBoolean1 : exprBoolean2;
|
|||
condString + "string" ? exprNumber1 : exprNumber2;
|
||||
foo() ? exprString1 : exprString2;
|
||||
array[1] ? exprIsObject1 : exprIsObject2;
|
||||
foo() ? exprString1 : exprBoolean1; // union
|
||||
|
||||
//Results shoud be same as Expr1 and Expr2
|
||||
var resultIsAny1 = condString ? exprAny1 : exprAny2;
|
||||
|
@ -43,15 +46,19 @@ var resultIsBoolean1 = condString ? exprBoolean1 : exprBoolean2;
|
|||
var resultIsNumber1 = condString ? exprNumber1 : exprNumber2;
|
||||
var resultIsString1 = condString ? exprString1 : exprString2;
|
||||
var resultIsObject1 = condString ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean1 = condString ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny2 = "" ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean2 = "string" ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber2 = 'c' ? exprNumber1 : exprNumber2;
|
||||
var resultIsString2 = 'string' ? exprString1 : exprString2;
|
||||
var resultIsObject2 = " " ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean2 = "hello" ? exprString1 : exprBoolean1; // union
|
||||
|
||||
var resultIsAny3 = typeof condString ? exprAny1 : exprAny2;
|
||||
var resultIsBoolean3 = condString.toUpperCase ? exprBoolean1 : exprBoolean2;
|
||||
var resultIsNumber3 = condString + "string" ? exprNumber1 : exprNumber2;
|
||||
var resultIsString3 = foo() ? exprString1 : exprString2;
|
||||
var resultIsObject3 = array[1] ? exprIsObject1 : exprIsObject2;
|
||||
var resultIsStringOrBoolean3 = typeof condString ? exprString1 : exprBoolean1; // union
|
||||
var resultIsStringOrBoolean4 = condString.toUpperCase ? exprString1 : exprBoolean1; // union
|
|
@ -14,7 +14,9 @@ var result1 = true ? a : b;
|
|||
//Be contextually typed and and bct is not identical, results in errors that union type is not assignable to target
|
||||
var result2: A = true ? a : b;
|
||||
var result3: B = true ? a : b;
|
||||
var result31: A | B = true ? a : b;
|
||||
|
||||
var result4: (t: X) => number = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
||||
var result5: (t: X) => string = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
||||
var result6: (t: X) => boolean = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
||||
var result6: (t: X) => boolean = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
||||
var result61: (t: X) => number| string = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
||||
|
|
Loading…
Reference in a new issue