无法找到名称...属性时,但不能在扩展时找到

时间:2016-02-02 16:41:53

标签: typescript

最近我一直在努力创建大型TypeScript模块,而且我真的不明白。基本上,以下不起作用:

// file A.ts
export = class A {

}

// file main.ts
import A = require('./A');

class B {
    a : A; // Cannot find name A
}

但以下工作

// file A.ts
export = class A {

}

// file main.ts
import A = require('./A');

class B extends A {
    constructor() {
        super();
    }
}

在一个案例中,它是如何找到A类而在另一个案例中却找不到的?我错过了关于如何在类中定义属性的内容吗?

2 个答案:

答案 0 :(得分:2)

我不打算尝试分析你的出口和进口有什么问题,生活太短暂了,但这是正确的做法:

// file A.ts
export class A {}

// file main.ts
import { A } from './A';

class B extends A {
  a: A; // go nuts!
}

现在,如果您希望class A成为默认导出,那么您可以这样做:

// file A.ts
export default class A {}

// file main.ts
import A from './A';

class B extends A {
  a: A; // woooh!
}

答案 1 :(得分:1)

这实际上是a known issue in the TypeScript compiler,虽然它可能是按设计的。

如果您确实需要使用根导出,可以将类表达式更改为类声明

class A {
}

export = A;

这应该有用。

但是,作为Vadam mentioned as a response,您应该使用ES6样式的导出。