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

在typescript中使用关键字作为标识符,typescript,Typescript,我尝试在命名空间中将class关键字用作函数标识符,如: namespace X { export function class( ... ) { ... } } 命名空间本身正在扩展函数X。。。{…} 有什么方法可以做到这一点吗?如果您想做的是命名一个方法类,那么这在编程语言中是一个很大的禁忌。类是您可以称之为保留字的内容: 你可以改为调用method类,我认为会有更好的结果。如果你想做的是命名一个method类,那么这在编程语言中是一个很大的禁忌。类是您可以称之为保留字的内容: 您可

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

namespace X {
   export function class( ... ) { ... }
}
命名空间本身正在扩展函数X。。。{…}


有什么方法可以做到这一点吗?

如果您想做的是命名一个方法类,那么这在编程语言中是一个很大的禁忌。类是您可以称之为保留字的内容:


你可以改为调用method类,我认为会有更好的结果。

如果你想做的是命名一个method类,那么这在编程语言中是一个很大的禁忌。类是您可以称之为保留字的内容:


您可以调用method类,这样会得到更好的结果。

在TypeScript中没有这样做的方法。您必须以某种方式在名称空间中声明一个带引号的名称,但是没有语法可以这样做。也不可能声明一个名为class的类型,因此会以两种不同的方式阻止您


如果您只需要在运行时显示X['class']=class{…},而不需要任何类型系统功能,则可以编写X['class']=class{…}。

在TypeScript中没有这样做的方法。您必须以某种方式在名称空间中声明一个带引号的名称,但是没有语法可以这样做。也不可能声明一个名为class的类型,因此会以两种不同的方式阻止您


如果您只需要在运行时显示X['class']=class{…},而不需要任何类型系统功能,则可以编写X['class']=class{…}。

我找到了一个解决方法

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

我找到了解决办法

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”的函数。我不知道你在问什么。你想调用你的函数类吗?认真考虑为什么你需要命名类的东西。可能想使用众多在线同义词表中的一个来查找替代词。没什么大不了的,我只是在玩这种语言,想尝试创建一个函数的快捷方式,该函数的名称中有“类”。许多语言都允许您引用关键字,使其成为标识符,如F和Scala。当源语言与编译目标有不同的标识符规则时,它很有用,就像typescript一样。有趣的是,如果我愿意,我可以调用函数?似乎有点不合逻辑。我确实认识到标识符规则的不同。。。正如@MikeMcCaughan提到的,仍然在努力理解这一点。是的,你可以定义一个if函数。在F中,您可以这样做:让``if``x=printfn%A x,尽管它对于使用具有不同保留关键字的其他语言的内容更有用。例如,要在scala中调用Thread.yield,您必须使用Thread.`yield',因为yield在scala中是一个关键字,但在java.C中不是♯ 还允许在关键字前面加“@”前缀,以便将其用作标识符。我可以将其命名为类,但我想尝试保持javascript惯例。许多语言允许引用关键字以使其成为标识符,如F和Scala。当源语言与编译目标有不同的标识符规则时,它很有用,就像typescript一样。有趣的是,如果我愿意,我可以调用函数?似乎有点不合逻辑。我确实认识到标识符规则的不同。。。正如@MikeMcCaughan提到的,仍然在努力理解这一点。是的,你可以定义一个if函数。在F中,您可以这样做:让``if``x=printfn%A x,尽管它对于使用具有不同保留关键字的其他语言的内容更有用。例如,要在scala中调用Thread.yield,您必须使用Thread.`yield',因为yield在scala中是一个关键字,但在java.C中不是♯ 还允许在关键字前面加“@”以用作标识。我可以将其命名为类,但我想尝试保持javascript惯例。我接受你的答案,因为它可以回答问题,但我找到了解决问题的方法。我在另一个答案中发布了它。我接受你的答案,因为它回答了问题,但我找到了解决问题的方法。我把它贴在另一个答复中。