Typescript错误“类不是构造函数”

我在ES6目标环境中运行以下打印代码,它说“汽车不是构造函数”

我已经遵循链接并尝试将目标环境更改为ES5。 它工作正常。 有人可以说明为什么它不适用于目标ES6。

这是我的TypeScript代码:

export class Cars {
    constructor(public len: number,public wid: number) { }
}

export function getSize(): Cars {
    return new Cars(20, 30);
};

在getSize函数中错误是“Cars不是构造函数”。

顺便说一下,我试图用Systemjs加载所有文件。

顺便说一句,我在浏览器中得到错误........不在编译它时...

这里是上述打字稿的编译代码....

System.register([], function(exports_1, context_1) {
    "use strict";
    var __moduleName = context_1 && context_1.id;
    var Cars;
    function getSize() {
        return new Cars(20, 30);
    }
    exports_1("getSize", getSize);
    return {
        setters:[],
        execute: function() {
            class Cars {
                constructor(len, wid) {
                    this.len = len;
                    this.wid = wid;
                }
            }
            ;
            exports_1("Cars", Cars);
        }
    }
});
//# sourceMappingURL=Cars.js.map

(从您打开的GH问题复制我的文章。)

这是TS 1.8.10中的一个错误,在master中修复。

tsc -t es6 ./foo.ts -m system

在1.8.10中给出:

System.register([], function(exports_1, context_1) {
    "use strict";
    var __moduleName = context_1 && context_1.id;
    var Cars;
    function getSize() {
        return new Cars(20, 30);
    }
    exports_1("getSize", getSize);
    return {
        setters:[],
        execute: function() {
            class Cars { // (1)
                constructor(len, wid) {
                    this.len = len;
                    this.wid = wid;
                }
            }
            exports_1("Cars", Cars);
        }
    }
});

所以getSize最终使用了undefinedvar Cars

在master中, (1)的输出是Cars = class Cars {所以它赋值给var CarsgetSize()


我不确定,但我认为这取决于TypeScript版本。

请尝试声明如下:

class Cars {
    constructor(public len: number,public wid: number) { }
}

export function getSize(): Cars {
    return new Cars(20, 30);
};

export { Cars };

确保你没有.js.ts文件在同一个目录下。 这可能是由您的IDE有时造成的。

链接地址: http://www.djcxy.com/p/91945.html

上一篇: Typescript error "class is not a constructor"

下一篇: How to correctly link opencv3 under ROS Indigo (using CMake)?