@@ -34,53 +34,93 @@ Wagon.prototype.load = function (supplies) {
34
34
>load : Symbol(Wagon.load, Decl(first.js, 10, 1))
35
35
>supplies : Symbol(supplies, Decl(first.js, 12, 33))
36
36
}
37
+ /** @param {*[]=} supplies - Yep, still a great type */
38
+ Wagon.prototype.weight = supplies => supplies ? supplies.length : -1
39
+ >Wagon.prototype : Symbol(Wagon.weight, Decl(first.js, 13, 1))
40
+ >Wagon : Symbol(Wagon, Decl(first.js, 0, 0), Decl(first.js, 6, 1))
41
+ >prototype : Symbol(Function.prototype, Decl(lib.es5.d.ts, --, --))
42
+ >weight : Symbol(Wagon.weight, Decl(first.js, 13, 1))
43
+ >supplies : Symbol(supplies, Decl(first.js, 15, 24))
44
+ >supplies : Symbol(supplies, Decl(first.js, 15, 24))
45
+ >supplies.length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
46
+ >supplies : Symbol(supplies, Decl(first.js, 15, 24))
47
+ >length : Symbol(Array.length, Decl(lib.es5.d.ts, --, --))
48
+
49
+ Wagon.prototype.speed = function () {
50
+ >Wagon.prototype : Symbol(Wagon.speed, Decl(first.js, 15, 68))
51
+ >Wagon : Symbol(Wagon, Decl(first.js, 0, 0), Decl(first.js, 6, 1))
52
+ >prototype : Symbol(Function.prototype, Decl(lib.es5.d.ts, --, --))
53
+ >speed : Symbol(Wagon.speed, Decl(first.js, 15, 68))
54
+
55
+ return this.numberOxen / this.weight()
56
+ >this.numberOxen : Symbol(Wagon.numberOxen, Decl(first.js, 4, 28))
57
+ >this : Symbol(Wagon, Decl(first.js, 0, 0), Decl(first.js, 6, 1))
58
+ >numberOxen : Symbol(Wagon.numberOxen, Decl(first.js, 4, 28))
59
+ >this.weight : Symbol(Wagon.weight, Decl(first.js, 13, 1))
60
+ >this : Symbol(Wagon, Decl(first.js, 0, 0), Decl(first.js, 6, 1))
61
+ >weight : Symbol(Wagon.weight, Decl(first.js, 13, 1))
62
+ }
37
63
// ok
38
64
class Sql extends Wagon {
39
- >Sql : Symbol(Sql, Decl(first.js, 13 , 1))
65
+ >Sql : Symbol(Sql, Decl(first.js, 18 , 1))
40
66
>Wagon : Symbol(Wagon, Decl(first.js, 0, 0), Decl(first.js, 6, 1))
41
67
42
68
constructor() {
43
69
super(); // error: not enough arguments
44
70
>super : Symbol(Wagon, Decl(first.js, 0, 0), Decl(first.js, 6, 1))
45
71
46
72
this.foonly = 12
47
- >this.foonly : Symbol(Sql.foonly, Decl(first.js, 17 , 16))
48
- >this : Symbol(Sql, Decl(first.js, 13 , 1))
49
- >foonly : Symbol(Sql.foonly, Decl(first.js, 17 , 16))
73
+ >this.foonly : Symbol(Sql.foonly, Decl(first.js, 22 , 16))
74
+ >this : Symbol(Sql, Decl(first.js, 18 , 1))
75
+ >foonly : Symbol(Sql.foonly, Decl(first.js, 22 , 16))
50
76
}
51
77
/**
52
78
* @param {Array.<string>} files
53
79
* @param {"csv" | "json" | "xmlolololol"} format
54
80
* This is not assignable, so should have a type error
55
81
*/
56
82
load(files, format) {
57
- >load : Symbol(Sql.load, Decl(first.js, 19 , 5))
58
- >files : Symbol(files, Decl(first.js, 25 , 9))
59
- >format : Symbol(format, Decl(first.js, 25 , 15))
83
+ >load : Symbol(Sql.load, Decl(first.js, 24 , 5))
84
+ >files : Symbol(files, Decl(first.js, 30 , 9))
85
+ >format : Symbol(format, Decl(first.js, 30 , 15))
60
86
61
87
if (format === "xmlolololol") {
62
- >format : Symbol(format, Decl(first.js, 25 , 15))
88
+ >format : Symbol(format, Decl(first.js, 30 , 15))
63
89
64
90
throw new Error("please do not use XML. It was a joke.");
65
91
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
66
92
}
93
+ else {
94
+ super.speed() // run faster
95
+ >super.speed : Symbol(Wagon.speed, Decl(first.js, 15, 68))
96
+ >super : Symbol(Wagon, Decl(first.js, 0, 0), Decl(first.js, 6, 1))
97
+ >speed : Symbol(Wagon.speed, Decl(first.js, 15, 68))
98
+
99
+ if (super.weight() < 0) {
100
+ >super.weight : Symbol(Wagon.weight, Decl(first.js, 13, 1))
101
+ >super : Symbol(Wagon, Decl(first.js, 0, 0), Decl(first.js, 6, 1))
102
+ >weight : Symbol(Wagon.weight, Decl(first.js, 13, 1))
103
+
104
+ // ????????????????????????
105
+ }
106
+ }
67
107
}
68
108
}
69
109
var db = new Sql();
70
- >db : Symbol(db, Decl(first.js, 31 , 3))
71
- >Sql : Symbol(Sql, Decl(first.js, 13 , 1))
110
+ >db : Symbol(db, Decl(first.js, 42 , 3))
111
+ >Sql : Symbol(Sql, Decl(first.js, 18 , 1))
72
112
73
113
db.numberOxen = db.foonly
74
114
>db.numberOxen : Symbol(Wagon.numberOxen, Decl(first.js, 4, 28))
75
- >db : Symbol(db, Decl(first.js, 31 , 3))
115
+ >db : Symbol(db, Decl(first.js, 42 , 3))
76
116
>numberOxen : Symbol(Wagon.numberOxen, Decl(first.js, 4, 28))
77
- >db.foonly : Symbol(Sql.foonly, Decl(first.js, 17 , 16))
78
- >db : Symbol(db, Decl(first.js, 31 , 3))
79
- >foonly : Symbol(Sql.foonly, Decl(first.js, 17 , 16))
117
+ >db.foonly : Symbol(Sql.foonly, Decl(first.js, 22 , 16))
118
+ >db : Symbol(db, Decl(first.js, 42 , 3))
119
+ >foonly : Symbol(Sql.foonly, Decl(first.js, 22 , 16))
80
120
81
121
// error, can't extend a TS constructor function
82
122
class Drakkhen extends Dragon {
83
- >Drakkhen : Symbol(Drakkhen, Decl(first.js, 32 , 25))
123
+ >Drakkhen : Symbol(Drakkhen, Decl(first.js, 43 , 25))
84
124
>Dragon : Symbol(Dragon, Decl(second.ts, 0, 0))
85
125
86
126
}
0 commit comments