58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
//// [contextualTypeWithTuple.ts]
|
|
// no error
|
|
var numStrTuple: [number, string] = [5, "hello"];
|
|
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;
|
|
|
|
// error
|
|
objNumTuple = [ {}, 5];
|
|
numStrBoolTuple = numStrTuple;
|
|
var strStrTuple: [string, string] = ["foo", "bar", 5];
|
|
|
|
unionTuple = unionTuple1;
|
|
unionTuple = unionTuple2;
|
|
unionTuple2 = unionTuple;
|
|
numStrTuple = unionTuple3;
|
|
|
|
//// [contextualTypeWithTuple.js]
|
|
// no error
|
|
var numStrTuple = [5, "hello"];
|
|
var numStrTuple2 = [5, "foo", true];
|
|
var numStrBoolTuple = [5, "foo", true];
|
|
var objNumTuple = [{ a: "world" }, 5];
|
|
var strTupleTuple = ["bar", [5, { x: 1, y: 1 }]];
|
|
var C = (function () {
|
|
function C() {
|
|
}
|
|
return C;
|
|
})();
|
|
var D = (function () {
|
|
function D() {
|
|
}
|
|
return D;
|
|
})();
|
|
var unionTuple = [new C(), "foo"];
|
|
var unionTuple1 = [new C(), "foo"];
|
|
var unionTuple2 = [new C(), "foo", new D()];
|
|
var unionTuple3 = [10, "foo"];
|
|
numStrTuple = numStrTuple2;
|
|
numStrTuple = numStrBoolTuple;
|
|
// error
|
|
objNumTuple = [{}, 5];
|
|
numStrBoolTuple = numStrTuple;
|
|
var strStrTuple = ["foo", "bar", 5];
|
|
unionTuple = unionTuple1;
|
|
unionTuple = unionTuple2;
|
|
unionTuple2 = unionTuple;
|
|
numStrTuple = unionTuple3;
|