以下TypeScript代码:
const hasName = () => {};
console.log("hasName.name", hasName.name);
function hasName2() {};
console.log("hasName2.name", hasName2.name);
export const noName = () => {};
console.log("noName.name", noName.name);
产生以下结果:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const hasName = () => { };
console.log("hasName.name", hasName.name);
function hasName2() { }
;
console.log("hasName2.name", hasName2.name);
exports.noName = () => { };
console.log("noName.name", exports.noName.name);
使用tsconfig:
{"compilerOptions":{"target":"esnext","outDir":"build","module":"commonjs"}}
日志输出为
hasName.name hasName
hasName2.name hasName2
noName.name
TypeScript编译器似乎省略了导出的匿名函数名称。 Babel(7 rc2)保留名称:
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.noName = void 0;
var hasName = function hasName() {};
console.log("hasName.name", hasName.name);
function hasName2() {}
console.log("hasName2.name", hasName2.name);
var noName = function noName() {};
exports.noName = noName;
console.log("noName.name", noName.name);
日志输出为
hasName.name hasName
hasName2.name hasName2
noName.name noName
有没有办法让TS保留名称?
答案 0 :(得分:1)
有没有办法让TS保留名称
不。不使用TS。
您可以将Babel与TypeScript https://babeljs.io/docs/en/next/babel-plugin-transform-typescript.html一起使用,但是无论如何,我还是建议远离.name
内省,并按原样使用TS。