Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 闭包编译器不会从自调用函数中删除死代码_Typescript_Google Closure Compiler_Tsickle - Fatal编程技术网

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

我正在编写一个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 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”)
(这不是必需的,但很好)