我在visual studio中使用typescript 1.5.我有一个名为app.ts的主类,另一个叫做FizzBuzzManager.ts.我无法弄清楚这段代码有什么问题,但它输出错误,"TypeError:jim.FizzBuzzManager不是构造函数".
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(); };
FizzBuzzManager.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.FizzBuzzManager不是构造函数
使用时这是一个常见错误--out
:https://basarat.gitbooks.io/typescript/docs/tips/outFile.html
您有责任按正确的顺序加载文件.不要用完并使用外部模块
TypeError:jim.FizzBuzzManager不是构造函数
使用时这是一个常见错误--out
:https://basarat.gitbooks.io/typescript/docs/tips/outFile.html
您有责任按正确的顺序加载文件.不要用完并使用外部模块
在搜索“打字稿不是构造函数”之后,我遇到了这个问题。不幸的是,这些答案并不能解决我的问题。我最终找到了解决方案,因此我将其发布在这里供后代参考。
问题
我定义了以下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"); } }