簡體   English   中英

打字稿錯誤“類不是構造函數”

[英]Typescript error “class is not a constructor”

我在ES6目標環境中運行以下打字稿代碼,它說“汽車不是構造函數”

我已經按照鏈接嘗試將目標環境更改為ES5。 它工作正常。 有人可以說明為什么它不適用於目標ES6。

這是我的TypeScript代碼:

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

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

函數getSize中的錯誤是“汽車不是構造函數”。

順便說一下,我試圖用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

我不確定,但我認為這取決於TypeScript版本。

請嘗試聲明這樣:

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

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

export { Cars };

(從你打開的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()工作。

確保您在同一目錄中沒有.js.ts文件。 這可能是由IDE引起的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM