mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-20 22:51:17 -05:00
Conformance tests for array element type of tuple is union type of tuple element types
This commit is contained in:
@@ -15,13 +15,17 @@ var classCDTuple: [C, D] = [new C(), new D()];
|
||||
var interfaceIITuple = <[I, I]>classCDTuple;
|
||||
var classCDATuple = <[C, D, A]>classCDTuple;
|
||||
var eleFromCDA1 = classCDATuple[2]; // A
|
||||
var eleFromCDA2 = classCDATuple[5]; // {}
|
||||
var eleFromCDA2 = classCDATuple[5]; // C | D | A
|
||||
var t10: [E1, E2] = [E1.one, E2.one];
|
||||
var t11 = <[number, number]>t10;
|
||||
var array1 = <{}[]>emptyObjTuple;
|
||||
var unionTuple: [C, string | number] = [new C(), "foo"];
|
||||
var unionTuple2: [C, string | number, D] = [new C(), "foo", new D()];
|
||||
var unionTuple3: [number, string| number] = [10, "foo"];
|
||||
var unionTuple4 = <[number, number]>unionTuple3;
|
||||
|
||||
// error
|
||||
var t3 = <[number, number]>numStrTuple;
|
||||
var t9 = <[A, I]>classCDTuple;
|
||||
var array1 = <number[]>numStrTuple;
|
||||
t4[2] = 10;
|
||||
t4[2] = 10;
|
||||
|
||||
@@ -4,6 +4,13 @@ var numStrTuple2: [number, string] = [5, "foo", true];
|
||||
var numStrBoolTuple: [number, string, boolean] = [5, "foo", true];
|
||||
var objNumTuple: [{ a: string }, number] = [{ a: "world" }, 5];
|
||||
var strTupleTuple: [string, [number, {}]] = ["bar", [5, { x: 1, y: 1 }]];
|
||||
class C { }
|
||||
class D { }
|
||||
var unionTuple: [C, string | number] = [new C(), "foo"];
|
||||
var unionTuple1: [C, string | number] = [new C(), "foo"];
|
||||
var unionTuple2: [C, string | number, D] = [new C(), "foo", new D()];
|
||||
var unionTuple3: [number, string| number] = [10, "foo"];
|
||||
|
||||
numStrTuple = numStrTuple2;
|
||||
numStrTuple = numStrBoolTuple;
|
||||
|
||||
@@ -11,3 +18,8 @@ numStrTuple = numStrBoolTuple;
|
||||
objNumTuple = [ {}, 5];
|
||||
numStrBoolTuple = numStrTuple;
|
||||
var strStrTuple: [string, string] = ["foo", "bar", 5];
|
||||
|
||||
unionTuple = unionTuple1;
|
||||
unionTuple = unionTuple2;
|
||||
unionTuple2 = unionTuple;
|
||||
numStrTuple = unionTuple3;
|
||||
@@ -1,15 +1,32 @@
|
||||
var strNumTuple: [string, number] = ["foo", 10];
|
||||
var numTupleTuple: [number, [string, number]] = [10, ["bar", 20]];
|
||||
var unionTuple1: [number, string| number] = [10, "foo"];
|
||||
var unionTuple2: [boolean, string| number] = [true, "foo"];
|
||||
|
||||
// no error
|
||||
var idx0 = 0;
|
||||
var idx1 = 1;
|
||||
var ele10 = strNumTuple[0]; // string
|
||||
var ele11 = strNumTuple[1]; // number
|
||||
var ele12 = strNumTuple[2]; // {}
|
||||
var ele13 = strNumTuple[idx0]; // {}
|
||||
var ele14 = strNumTuple[idx1]; // {}
|
||||
var ele12 = strNumTuple[2]; // string | number
|
||||
var ele13 = strNumTuple[idx0]; // string | number
|
||||
var ele14 = strNumTuple[idx1]; // string | number
|
||||
var ele15 = strNumTuple["0"]; // string
|
||||
var ele16 = strNumTuple["1"]; // number
|
||||
var strNumTuple1 = numTupleTuple[1]; //[string, number];
|
||||
var ele17 = numTupleTuple[2]; // {}
|
||||
var ele17 = numTupleTuple[2]; // number | [string, number]
|
||||
var eleUnion10 = unionTuple1[0]; // number
|
||||
var eleUnion11 = unionTuple1[1]; // string | number
|
||||
var eleUnion12 = unionTuple1[2]; // string | number
|
||||
var eleUnion13 = unionTuple1[idx0]; // string | number
|
||||
var eleUnion14 = unionTuple1[idx1]; // string | number
|
||||
var eleUnion15 = unionTuple1["0"]; // number
|
||||
var eleUnion16 = unionTuple1["1"]; // string | number
|
||||
|
||||
var eleUnion20 = unionTuple2[0]; // boolean
|
||||
var eleUnion21 = unionTuple2[1]; // string | number
|
||||
var eleUnion22 = unionTuple2[2]; // string | number | boolean
|
||||
var eleUnion23 = unionTuple2[idx0]; // string | number | boolean
|
||||
var eleUnion24 = unionTuple2[idx1]; // string | number | boolean
|
||||
var eleUnion25 = unionTuple2["0"]; // boolean
|
||||
var eleUnion26 = unionTuple2["1"]; // string | number
|
||||
Reference in New Issue
Block a user