Typescript class.default 不是构造函数

Typescript class.default is not a constructor

本文关键字:构造函数 default class Typescript      更新时间:2023-09-26

创建一个 Angular2 应用程序,在第一个类的构造函数中调用另一个类的构造函数时,我面临以下问题。

头等舱代码

import SecondClass from './second-class'
export class FirstClass {
    someVar:string;
    secondClass:SecondClass;
    constructor(firstClass?: FirstClass) {
        someVar='test';
        secondClass= new SecondClass;
    }
}

二等舱代码:

export class SecondClass {
    someOtherVar:string;
    constructor(secondClass?:SecondClass) {
        someOtherVar='test';
    }
}

会给我错误:原始异常:类型错误:second_class_1.default 不是构造函数

./二等内容

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编译器的编译输出

错误消息暗示您在./second-class中使用了命名导出(export class SecondClass {})(非默认值)。所以这意味着您的导入应该看起来像

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

代码中有一些错误:

  • 导入时缺少{}

  • 调用构造函数时缺少()

  • 访问类成员时缺少this

头等舱代码

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';
    }
}

这为时已晚,但我现在刚刚收到同样的错误。解决方案默认导出SecondClass,因此第二类代码将为:

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

并使用import SecondClass from './second-class'导入其他类