mirror of
https://github.com/swc-project/swc.git
synced 2024-12-18 19:21:33 +03:00
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
//Cond ? Expr1 : Expr2, Expr1 and Expr2 have identical best common type
|
|
class X { propertyX: any; propertyX1: number; propertyX2: string };
|
|
class A extends X { propertyA: number };
|
|
class B extends X { propertyB: string };
|
|
|
|
var x: X;
|
|
var a: A;
|
|
var b: B;
|
|
|
|
//Cond ? Expr1 : Expr2, Expr1 is supertype
|
|
//Be Not contextually typed
|
|
true ? x : a;
|
|
var result1 = true ? x : a;
|
|
|
|
//Expr1 and Expr2 are literals
|
|
true ? {} : 1;
|
|
true ? { a: 1 } : { a: 2, b: 'string' };
|
|
var result2 = true ? {} : 1;
|
|
var result3 = true ? { a: 1 } : { a: 2, b: 'string' };
|
|
|
|
//Contextually typed
|
|
var resultIsX1: X = true ? x : a;
|
|
var result4: (t: A) => any = true ? (m) => m.propertyX : (n) => n.propertyA;
|
|
|
|
//Cond ? Expr1 : Expr2, Expr2 is supertype
|
|
//Be Not contextually typed
|
|
true ? a : x;
|
|
var result5 = true ? a : x;
|
|
|
|
//Expr1 and Expr2 are literals
|
|
true ? 1 : {};
|
|
true ? { a: 2, b: 'string' } : { a: 1 };
|
|
var result6 = true ? 1 : {};
|
|
var result7 = true ? { a: 2, b: 'string' } : { a: 1 };
|
|
|
|
//Contextually typed
|
|
var resultIsX2: X = true ? x : a;
|
|
var result8: (t: A) => any = true ? (m) => m.propertyA : (n) => n.propertyX;
|
|
|
|
//Result = Cond ? Expr1 : Expr2, Result is supertype
|
|
//Contextually typed
|
|
var resultIsX3: X = true ? a : b;
|
|
var result10: (t: X) => any = true ? (m) => m.propertyX1 : (n) => n.propertyX2;
|
|
|
|
//Expr1 and Expr2 are literals
|
|
var result11: any = true ? 1 : 'string';
|