当前位置:  开发笔记 > 编程语言 > 正文

为什么这个Typescript输出"[Class]不是构造函数."?

如何解决《为什么这个Typescript输出"[Class]不是构造函数."?》经验,为你挑选了2个好方法。

我在visual studio中使用typescript 1.5.我有一个名为app.ts的主类,另一个叫做FizzBu​​zzManager.ts.我无法弄清楚这段代码有什么问题,但它输出错误,"TypeError:jim.FizzBu​​zzManager不是构造函数".

app.ts

 namespace jim {
    class Greeter {
        element: HTMLElement;
        span: HTMLElement;
        timerToken: number;

        constructor() {
            window.console.log("constructing Greeter.");
            this.init();
        }

        private init() {
            window.console.log("Calling init.");
            var _fizzBuzzManager: any = new jim.FizzBuzzManager();
    }

}

    window.onload = () => {
        window.console.log("Hello")
        var greeter = new Greeter();

};

FizzBu​​zzManager.ts

namespace jim {

export class FizzBuzzManager {

    constructor() {
        window.console.log("Making a FizzBuzzManager.");
    }

    public myThing: String = "Hi";

    public fizzBuzz2() {
        window.console.log("fizzbuzzing2 " + this.myThing);
    }

}

export function fizzBuzz() {
    window.console.log("export function fizzbuzz");
}

}

在浏览器中查看编译输出时的输出是:

Hello                                                  app.js:15:9 
constructing Greeter.                                  app.js:5:13 
Calling init.                                          app.js:9:13 
TypeError: jim.FizzBuzzManager is not a constructor    app.js:10:36

basarat.. 17

TypeError:jim.FizzBu​​zzManager不是构造函数

使用时这是一个常见错误--out:https://basarat.gitbooks.io/typescript/docs/tips/outFile.html

您有责任按正确的顺序加载文件.不要用完并使用外部模块



1> basarat..:

TypeError:jim.FizzBu​​zzManager不是构造函数

使用时这是一个常见错误--out:https://basarat.gitbooks.io/typescript/docs/tips/outFile.html

您有责任按正确的顺序加载文件.不要用完并使用外部模块



2> Tod Birdsall..:

在搜索“打字稿不是构造函数”之后,我遇到了这个问题。不幸的是,这些答案并不能解决我的问题。我最终找到了解决方案,因此我将其发布在这里供后代参考。

问题

我定义了以下TypeScript类:

module mymodule {
    export class myclass {
        addDocuments(parentId: string) {
        // Code removed for brevity...
        }
    }
}

然后,我在一个单独的模块中调用该类:

module mymodule.test {

    var myClass = new mymodule.myclass();

    export function initialize(): void {
        myClass.addDocuments("test123");
    }
}

编译后并尝试加载执行生成的Javascript的页面时,该页面无法正确加载,并且我看到了以下JS异常:

未捕获的TypeError:mymodule.myclass不是构造函数

一位开发人员友好地指出,我需要在函数内部移动对象的实例化。因此,现在我的实例化代码如下所示,并且可以正常工作:

module mymodule.test {

    var myClass: mymodule.myclass;

    export function initialize(): void {
        myClass = new mymodule.myclass();
        myClass.addDocuments("test123");
    }
}

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有