2016-04-24 147 views
8

创建一个Angular2应用程序时,在第一个类的构造函数中调用另一个类的构造函数时,我遇到了以下问题。Typescript class.default不是构造函数

头等舱代码

import {SecondClass} from './second-class' 

export class FirstClass { 
    someVar:string; 
    secondClass:SecondClass; 

    constructor(firstClass?: FirstClass) { 
     this.someVar='test'; 
     this.secondClass= new SecondClass(); 
    } 
} 

二等代码:

export class SecondClass { 
    someOtherVar:string; 

    constructor(secondClass?:SecondClass) { 
     this.someOtherVar='test'; 
    } 
} 

能给我的错误:原来的异常:类型错误:second_class_1.default不是构造函数的

内容。/second-class

System.register([], function(exports_1, context_1) { 
    "use strict"; 
    var __moduleName = context_1 && context_1.id; 
    var SecondClass; 
    return { 
     setters:[], 
     execute: function() { 
      SecondClass = (function() { 
       function SecondClass(secondClass) { 
        this.someOtherVar='test'; 
       } 
       return SecondClass; 
      }()); 
      exports_1("SecondClass", SecondClass); 
     } 
    } 
}); 
//# sourceMappingURL=second-class.js.map 

这是来自Typescript编译器的编译输出

+0

发布内容。 – dfsq

+0

'default'是一个[javascript保留字](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords)。 – Mottie

+0

SecondClass可能出现循环错误 – randominstanceOfLivingThing

回答

12

错误消息意味着您在./second-class(非默认值)中使用了命名导出(export class SecondClass {})。因此,这意味着你应该进口看起来像

import {SecondClass} from './second-class' 
+0

谢谢。修改了代码,但仍然收到错误,如ORIGINAL EXCEPTION:TypeError:second_class_1.SecondClass不是构造函数 –

+0

您可以发布'./second-class'的内容吗? (TypeScript,没有转发)。 – dfsq

+0

我在刚才FirstClass代码下面的问题中使用它。 –

4

有在代码中的一些错误:从调用构造函数

  • 进口

  • 失踪()失踪{}

  • 缺少this访问班级成员

头等舱代码

import {SecondClass} from './second-class' 

export class FirstClass { 
    someVar:string; 
    secondClass:SecondClass; 

    constructor(firstClass?: FirstClass) { 
     this.someVar='test'; 
     this.secondClass= new SecondClass(); 
    } 
} 

二等代码:`/第二class`的

export class SecondClass { 
    someOtherVar:string; 

    constructor(secondClass?:SecondClass) { 
     this.someOtherVar='test'; 
    } 
} 
+0

谢谢。这些是输入问题时的拼写错误。没有这些错误的代码给出了所述错误。 –