104 lines
2.6 KiB
JavaScript
104 lines
2.6 KiB
JavaScript
//// [castingTuple.ts]
|
|
interface I { }
|
|
class A { a = 10; }
|
|
class C implements I { c };
|
|
class D implements I { d };
|
|
class E extends A { e };
|
|
class F extends A { f };
|
|
enum E1 { one }
|
|
enum E2 { one }
|
|
|
|
// no error
|
|
var numStrTuple: [number, string] = [5, "foo"];
|
|
var emptyObjTuple = <[{}, {}]>numStrTuple;
|
|
var numStrBoolTuple = <[number, string, boolean]>numStrTuple;
|
|
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]; // 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;
|
|
|
|
|
|
//// [castingTuple.js]
|
|
var __extends = this.__extends || function (d, b) {
|
|
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
|
function __() { this.constructor = d; }
|
|
__.prototype = b.prototype;
|
|
d.prototype = new __();
|
|
};
|
|
var A = (function () {
|
|
function A() {
|
|
this.a = 10;
|
|
}
|
|
return A;
|
|
})();
|
|
var C = (function () {
|
|
function C() {
|
|
}
|
|
return C;
|
|
})();
|
|
;
|
|
var D = (function () {
|
|
function D() {
|
|
}
|
|
return D;
|
|
})();
|
|
;
|
|
var E = (function (_super) {
|
|
__extends(E, _super);
|
|
function E() {
|
|
_super.apply(this, arguments);
|
|
}
|
|
return E;
|
|
})(A);
|
|
;
|
|
var F = (function (_super) {
|
|
__extends(F, _super);
|
|
function F() {
|
|
_super.apply(this, arguments);
|
|
}
|
|
return F;
|
|
})(A);
|
|
;
|
|
var E1;
|
|
(function (E1) {
|
|
E1[E1["one"] = 0] = "one";
|
|
})(E1 || (E1 = {}));
|
|
var E2;
|
|
(function (E2) {
|
|
E2[E2["one"] = 0] = "one";
|
|
})(E2 || (E2 = {}));
|
|
// no error
|
|
var numStrTuple = [5, "foo"];
|
|
var emptyObjTuple = numStrTuple;
|
|
var numStrBoolTuple = numStrTuple;
|
|
var classCDTuple = [new C(), new D()];
|
|
var interfaceIITuple = classCDTuple;
|
|
var classCDATuple = classCDTuple;
|
|
var eleFromCDA1 = classCDATuple[2]; // A
|
|
var eleFromCDA2 = classCDATuple[5]; // C | D | A
|
|
var t10 = [0 /* one */, 0 /* one */];
|
|
var t11 = t10;
|
|
var array1 = emptyObjTuple;
|
|
var unionTuple = [new C(), "foo"];
|
|
var unionTuple2 = [new C(), "foo", new D()];
|
|
var unionTuple3 = [10, "foo"];
|
|
var unionTuple4 = unionTuple3;
|
|
// error
|
|
var t3 = numStrTuple;
|
|
var t9 = classCDTuple;
|
|
var array1 = numStrTuple;
|
|
t4[2] = 10;
|