我试图使用class
关键字作为功能标识符在像一个名称空间:使用关键字作为标识符打字稿
namespace X {
export function class(...) { ... }
}
本身延伸的函数(function X (...) { ... }
)的命名空间。
这有什么办法可以做到吗?
我试图使用class
关键字作为功能标识符在像一个名称空间:使用关键字作为标识符打字稿
namespace X {
export function class(...) { ... }
}
本身延伸的函数(function X (...) { ... }
)的命名空间。
这有什么办法可以做到吗?
在TypeScript中没有办法做到这一点。你必须以某种方式在命名空间中声明一个带引号的名字,但是没有这样做的语法。也不可能声明一个名为class
的类型,所以你以两种不同的方式被阻止。
如果您只需要它在运行时存在并且不需要任何类型的系统功能,则可以编写(<any>X)['class'] = class { ... }
。
我接受您的答案,因为它的答案问如问,但我找到了解决问题的方法。我发布了另一个答案。 – gbieging
如果你想要做的是命名一个方法class
这是一个很大的编程语言不容忽视。 class
就是你所说的保留字:https://en.wikipedia.org/wiki/Reserved_word
你可以调用方法“Class”来代替,并且会有更好的结果。
不少语言让你引用关键字来使它们成为标识符,比如F#和Scala。当源语言对编译目标具有不同的标识符规则时,这很有用,就像打字稿一样。 – Lee
有趣,所以如果我想要,我可以调用函数“if”或“then”?似乎有点不合逻辑。我确实认识到标识符规则的不同......尽管如@MikeMcCaughan所说的那样,仍然在努力争取这一点。 –
是的,你可以定义一个'if'函数。在F#中,您可以这样做:'let'''if if'''x = printfn'%A“x',尽管它对于使用不同保留关键字的其他语言消费更有用。例如,在scala中调用'Thread.yield',你必须使用'Thread。\'yield'()',因为'yield'是scala中的一个关键字,而不是java中的关键字。 – Lee
我找到了解决方法。
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) { ... })
我不确定你在问什么。你想调用你的函数'class'吗? –
认真考虑你为什么需要命名'class'。可能要使用众多在线词典中的一个来查找替代词。 –
没有严重的需要,我只是在玩这个语言,想试着创建一个名字为'class'的函数的快捷方式 – gbieging