我正在编写一个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。然后我使用高级优化标志运行Closure Compiler来缩小我的代码。
这是输出(漂亮打印):
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;
}
};
Closure Compiler输出:
console.log("Answer: 7");
有没有办法告诉Closure Compiler 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")
进行优化(这不是必需的,但会很棒)