如何解决将名称空间与导入的类合并
在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 举报,一经查实,本站将立刻删除。