【问题标题】:Circular reference in declarations: Type Error: Object #<Object> has no method 'call'声明中的循环引用:类型错误:对象 #<Object> 没有方法“调用”
【发布时间】:2014-07-04 09:40:04
【问题描述】:

这 3 个简单的类被设置在三个独立的 Typescript (1.0.1) 文件中,这些文件被转译为 CommonJS 模块

SubASubB 都继承自 KlassKlass 也导入 SubB

node,运行

var SubA = require('./SubA');
var sa = new SubA('blah');
sa.toSubB();

SubB 构造函数中的 super() 调用失败,TypeError: Object #&lt;Object&gt; has no method 'call')

(编辑:将上面js代码中的SubA替换为SubB,不会失败)

你有没有办法解决这个问题,或者Klass 不可能导入SubB

类.ts

import SubB = require('./SubB')

class Klass {

    private name: string

    setName(name: string) {
        this.name = name
    }

    getName(): string {
        return this.name
    }

    createSubB(): SubB {
        return new SubB(name)
    }
}

export = Klass

子A.ts

import Klass = require('./Klass')
import SubB = require('./SubB')

class SubA extends Klass {

    constructor(name:string) {

        super()
        this.setName(name)
    }

    toSubB(): SubB {
        return new SubB(this.getName())
    }
}

export = SubA

SubB.ts

import Klass = require('./Klass')
import SubA = require('./SubA')

class SubB extends Klass {

    constructor(name:string) {

        super()
        this.setName(name)
    }

    toSubA(): SubA {
        return new SubA(this.getName())
    }
}

export = SubB

tsc 命令行选项:--module commonjs -target ES5

【问题讨论】:

    标签: node.js typescript commonjs


    【解决方案1】:

    更改SubASubBimport语句的顺序已修复

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 2013-04-19
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多