Aqui está meu código TypeScript:
// Enum
enum Direction {
North = 1,
East,
West,
South
}
console.log(Direction.East);
// Literal types
function yesOrNoQuestion(ans: "yes" | "no"): void {
console.log("You said", ans);
}
yesOrNoQuestion("yes");
// Tuple
type rgb = [red: number, green: number, blue: number];
const color: rgb = [10, 255, 255];
console.log(color);
const tuple: [boolean, string] = [true, "yes"];
console.log(tuple);
Aqui está o código compilado:
"use strict";
// Enum
var Direction;
(function (Direction) {
Direction[Direction["North"] = 1] = "North";
Direction[Direction["East"] = 2] = "East";
Direction[Direction["West"] = 3] = "West";
Direction[Direction["South"] = 4] = "South";
})(Direction || (Direction = {}));
console.log(Direction.East);
// Literal types
function yesOrNoQuestion(ans) {
console.log("You said", ans);
}
yesOrNoQuestion("yes");
const color = [10, 255, 255];
console.log(color);
const tuple = [true, "yes"];
console.log(tuple);
Tenho 3 comentários no meu código TS (Enum, Tipos Literais, Tupla). Mas o código compilado tem apenas os dois primeiros comentários. Há algum motivo para isso? O TS deve manter todos os comentários ou removê-los. Por que ele está removendo apenas comentários específicos?
Não defini explicitamente "removeComments" em meu tsconfig.json
:
{
"compilerOptions": {
"target": "ES6",
"strict": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"alwaysStrict": true
}
}
Eu compilei usando npx tsc
comando.
Eu esperava:
- Todos os três comentários devem ser preservados, ou
- Todos os três comentários devem ser removidos
Mas o TypeScript preservou apenas os dois primeiros. Não defini "removeComments" explicitamente.
Então, eu estou me perguntando:
- Existe alguma regra ou lógica que o TypeScript usa para manter/remover determinados comentários?
- Isso se deve à otimização ou à transformação do código?
- Ou isso é apenas um problema de configuração?
No TS os comentários são sempre anexados a algum pedaço de código
No seu caso,
// Tuple
está anexado um código somente em tempo de compilação, uma definição de tipo.É por isso que você não vê isso na saída.
Os comentários anexados às definições de tipo serão removidos durante a compilação, pois a resposta aceita foi declarada.
No entanto, o mesmo pode ser mantido inserindo uma nova linha entre o comentário e a definição do tipo, conforme mostrado abaixo.
saudador.ts
Vamos compilar.
tsc --lib es2015,dom greeter.ts
greeter.js
Citações:
os comentários antes das importações são removidos na saída AMD, a menos que haja uma linha em branco depois deles
tsc remove comentários que precedem 'export = ...', a menos que uma nova linha extra siga o comentário