【发布时间】:2012-10-04 04:56:52
【问题描述】:
我有一个构建链设置,可以将文件从 coffeescript 转换为 typescript 到 javascript。我的问题是:向 coffeescript 函数添加类型签名的最小侵入方式是什么?
coffeescript 通过反引号支持原始 javascript。但是,这意味着 coffeescript 不再理解反引号 sn-p。
Coffeescript 拒绝这些:
f = (`a:String`) -> a + 2
f = (a`:String`) -> a + 2
我可以在函数上面写这个:
`var f = (String) => any`
它编译,但不进行类型检查。我认为这是因为 Coffeescript 已经声明了变量。
我能弄清楚如何让它工作的唯一方法需要大量的样板
f = (a) ->
`return (function(a:String){`
a + 2;
`})(a)`
反引号在新的 Coffeescript Redux 编译器中似乎无法正常工作: https://github.com/michaelficarra/CoffeeScriptRedux/issues/71
我很清楚这是一项值得怀疑的尝试,现在它只是一个实验。我目前使用contracts.coffee,但我正在寻找实际类型。
【问题讨论】:
-
也许您应该选择一种语言或另一种语言。你的代码让被误导的 Pascal 程序员在编写 C 语言时想起了
#define BEGIN {。 -
这似乎不是一个好主意...
-
你们之前的两位评论者,显然将两者混为一谈是可怕的。我相信这就是 为什么 OP 要求并想要一个解决方案...