Added tests on intersection types.

This commit is contained in:
Daniel Rosenwasser
2015-10-28 16:09:45 -07:00
parent 929808ef07
commit 262352ec5b
3 changed files with 69 additions and 0 deletions
@@ -0,0 +1,24 @@
interface I1 {
p1: number
}
interface I2 extends I1 {
p2: number;
}
interface I3 {
p3: number;
}
var x = { p1: 10, p2: 20, p3: 30 };
var y: I1 & I3 = x;
var z: I2 = x;
if (y === z || z === y) {
}
else if (y !== z || z !== y) {
}
else if (y == z || z == y) {
}
else if (y != z || z != y) {
}
@@ -0,0 +1,25 @@
var strAndNum: string & number;
var numAndBool: number & boolean;
var str: string;
var num: number;
var bool: boolean;
switch (strAndNum) {
// Identical
case strAndNum:
break;
// Constituents
case str:
case num:
break;
// Overlap in constituents
case numAndBool:
break;
// No relation
case bool:
break;
}
@@ -0,0 +1,20 @@
interface I1 {
p1: number
}
interface I2 extends I1 {
p2: number;
}
interface I3 {
p3: number;
}
var x = { p1: 10, p2: 20, p3: 30 };
var y: I1 & I3 = x;
var z: I2 = x;
var a = <I1 & I3>z;
var b = <I3>z;
var c = <I2>z;
var d = <I1>y;