2023-07-04 by Wills
Here is a basic example where void
type is erased.
// src/basic.ts
function cuckoo(): void { // <-- void is removed
console.log("cuckoo");
}
// src/basic.js
function cuckoo() {
console.log("cuckoo");
}
There is a nuance in the words “Roughly speaking”. Many (including myself) thought that everything from TypeScript (TS) are erased. This is not true, some syntaxes are instead converted to something JavaScript (JS) recognizes.
It’s worth noting that depending on TS and JS versions what remains will be different. More on this later.
Enums are the most obvious remnants of TS.
// src/enum.ts
enum Direction {
Up,
Down,
Left,
Right,
}
const directions = [
Direction.Up,
Direction.Down,
Direction.Left,
Direction.Right,
];
// src/enum.js
var Direction;
(function (Direction) {
Direction[Direction["Up"] = 0] = "Up";
Direction[Direction["Down"] = 1] = "Down";
Direction[Direction["Left"] = 2] = "Left";
Direction[Direction["Right"] = 3] = "Right";
})(Direction || (Direction = {}));
var directions = [
Direction.Up,
Direction.Down,
Direction.Left,
Direction.Right,
];
Notice that enum Direction
is compiled into JS object Direction
and not erased away.
Aside 1: Since Enums are just objects, you can pass enums as values.