在typescript中使用关键字作为标识符

时间:2016-06-29 16:42:00

标签: typescript

我尝试将class关键字用作命名空间中的函数标识符,如:

namespace X {
   export function class( ... ) { ... }
}

命名空间本身正在扩展一个函数(function X ( ... ) { ... })。

有什么办法可以做到吗?

3 个答案:

答案 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) { ... })