无法添加类本地接口和类型声明,如下所示:
class Foo {
interface Bar {}
private bar: Bar;
}
到目前为止,我一直把所有东西放在一个模块中:
module Foo {
export interface Bar {}
export class Foo {
private bar: Bar;
}
}
然而,我最近发现你可以创建课程/模块" hybrids"可以这么说。
class Foo {
private bar: Foo.Bar;
}
module Foo {
export interface Bar {}
}
编译器不抱怨这一点,类型检查器似乎做的一切都正确。这是一个坏主意吗?它将来会破裂吗?
答案 0 :(得分:2)
文档中概述了此语言功能:
Declaration Merging: Merging Modules with Classes, Functions, and Enums
考虑到它在文档中已经概述并且这种模式相当普遍(特别是在现有的JavaScript库中),我认为可以说这种语言功能仍然存在。
答案 1 :(得分:1)
这是一个名为“声明合并”的well-documented功能,因此预计会稳定运行一段时间。
具体来说,模块中可以生成代码的任何内容都将成为类的静态成员,并且接口不会生成代码,因此无论它们是否存在于类中都无关紧要。