我尝试将class
关键字用作命名空间中的函数标识符,如:
namespace X {
export function class( ... ) { ... }
}
命名空间本身正在扩展一个函数(function X ( ... ) { ... }
)。
有什么办法可以做到吗?
答案 0 :(得分:5)
在TypeScript中无法做到这一点。你必须以某种方式在命名空间中声明一个引用的名称,但是没有这样做的语法。声明名为class
的类型也是不可能的,因此您会以两种不同的方式被阻止。
如果您只是需要在运行时出现并且不需要任何类型系统功能,则可以编写(<any>X)['class'] = class { ... }
。
答案 1 :(得分:1)
如果您要尝试的方法是命名方法class
,那么在编程语言中这是一个非常大的问题。 class
就是您所谓的保留字:https://en.wikipedia.org/wiki/Reserved_word
您可以调用方法&#34; Class&#34;相反,我认为会有更好的结果。
答案 2 :(得分:0)
我找到了解决方法。
interface I {
(foo: Bar): Baz
class(foo: Bar): Baz
}
const X = (function (X: any) {
X.class = function (foo: Bar) { ... }
return <I>X
})(function (foo: Bar) { ... })