Typescript 闭包编译器不会从自调用函数中删除死代码
我正在编写一个TypeScript应用程序,它接受两个数字并将数字的总和打印到控制台Typescript 闭包编译器不会从自调用函数中删除死代码,typescript,google-closure-compiler,tsickle,Typescript,Google Closure Compiler,Tsickle,我正在编写一个TypeScript应用程序,它接受两个数字并将数字的总和打印到控制台 计算器2.ts: export namespace calculator { export function add(a: number, b: number): number { return a + b; } export function subtract(a: number, b: number): number { return
计算器2.ts
:
export namespace calculator
{
export function add(a: number, b: number): number
{
return a + b;
}
export function subtract(a: number, b: number): number
{
return a - b;
}
}
import {calculator} from './calculator2';
var answer = calculator.add(3, 4);
console.log('Answer: ' + answer);
app.ts
:
export namespace calculator
{
export function add(a: number, b: number): number
{
return a + b;
}
export function subtract(a: number, b: number): number
{
return a - b;
}
}
import {calculator} from './calculator2';
var answer = calculator.add(3, 4);
console.log('Answer: ' + answer);
我运行tsickle将类型脚本转换为Google闭包编译器能够理解的JavaScript。然后我运行带有高级优化标志的闭包编译器来缩小代码
这是输出(打印精美):
这会打印7,正如预期的那样,但是当我不使用它时,calculator.subtract()
(d.a
)不会被删除
如果我这样修改计算器
文件:
export var calculator: any =
{
add: function(a: number, b: number): number
{
return a + b;
},
subtract: function(a: number, b: number): number
{
return a - b;
}
};
闭包编译器输出以下内容:
console.log("Answer: 7");
有没有办法告诉闭包编译器,subtract
函数没有被调用(至少不是从app.ts
)并且可以删除它
另一项测试:
使用“calculator3.ts”
export class calculator
{
public add(a: number, b: number): number
{
return a + b;
}
public subtract(a: number, b: number): number
{
return a - b;
}
}
和“app.ts”
import {calculator} from './calculator3';
var myCalculator = new calculator();
var answer = myCalculator.add(3, 4);
console.log('Answer: ' + answer);
生成:
var c = (new (function() {
function a() {
}
a.prototype.add = function(a, b) {
return a + b;
};
return a;
}())).add(3, 4);
console.log("Answer: " + c);
它删除了subtract
功能,但没有优化到console.log(“答案:7”)
(这不是必需的,但很好)