问题描述
在TypeScript中,您可以像这样合并一个类和一个命名空间:
foo.ts:
class Foo {
foo() {}
}
namespace Foo {
export const ANSWER = 42;
}
export default Foo;
consumer.ts:
import Foo from './foo'
const foo = new Foo();
const x = Foo.ANSWER;
如果我们现在尝试重新组织代码,以使类Foo
位于其自己的文件中,那么该类如何与命名空间合并?
如果我们这样做:
foo.ts:
export default class Foo {
foo() {}
}
index.ts:
import Foo from './foo';
namespace Foo {
export const ANSWER = 42;
}
然后我们在TS2440: Import declaration conflicts with local declaration of 'Foo'
行上得到import Foo
。
到目前为止,我发现的唯一解决方法是:
foo.ts:
export default class Foo {
foo() {}
}
index.ts:
import _Foo from './foo';
class Foo extends _Foo {}
namespace Foo {
export const ANSWER = 42;
}
这似乎可行,但是很丑陋,实际上我们不再导出相同的类,而是导出具有相同接口的相同子类。尽管如此,原型还是不一样,等等。
是否有可能在一个文件中定义一个类,然后让另一个文件声明与该类合并的名称空间?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)