最近我一直在努力创建大型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
类而在另一个案例中却找不到的?我错过了关于如何在类中定义属性的内容吗?
答案 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样式的导出。