我正在编写一个 TypeScript 应用程序,它需要两个数字并将数字的总和打印到控制台。
calculator2.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;
}
}
app.ts
:
import {calculator} from './calculator2';
var answer = calculator.add(3, 4);
console.log('Answer: ' + answer);
我运行 tsickle 将 TypeScript 转换为 Google Closure Compiler 可以理解的 JavaScript。然后我运行带有高级优化标志的闭包编译器来缩小我的代码。
这是输出(漂亮打印):
var a;
(function(d) {
d.add = function(b, c) {
return b + c;
};
d.a = function(b, c) {
return b - c;
};
})(a || (a = {}));
var e = a.add(3, 4);
console.log("Answer: " + e);
正如预期的那样,这将打印 7,但是calculator.subtract()
(d.a
在缩小的代码中) 没有被删除,而我没有使用它。
如果我calculator
像这样修改文件:
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("Answer: 7")
(这不是必需的,但会很棒)