我正在考虑在我的下一个项目中使用Hyperapp,但我注意到虽然它类似于Elm,但它不提供类型安全保证(这是Elm最好的特性之一)。是否有JavaScript库的组合(可能与Hyperapp一起使用)可以为您提供Elm所具有的类型安全性?
发布于 2018-03-02 08:58:26
从本质上讲,构建软件就是使用具有不同权衡的抽象。Hyperapp以牺牲可靠性为代价,权衡了熟悉的语法,因为Hyperapp使用的是默认情况下可变的JavaScript。对于可变变量,您无法做出保证,因为根据定义,它是不确定的。但是,您可以测试代码以使其更具确定性。但是,这是另一种权衡。
长话短说,如果你想要类型安全,你不能只依赖JavaScript。你可以像Purescript,Fable和Elm那样转译成JavaScript。如果你想要更多的可靠性,我建议你花时间去学习这些语言中的一种。
祝你好运!
发布于 2018-03-02 15:43:01
Hyperapp提供了许多以函数式风格构建应用程序所需的基本工具,同时保留在JavaScript生态系统中,并且不需要构建步骤即可开始。与Elm和Reason等更严格的解决方案相比,这是一个明显较低的进入门槛。
如果你考虑一下从命令式到功能式风格的刻度,比如一个刻度盘,Hyperapp就会把刻度盘转到功能刻度盘。这是由你作为用户决定如何旋转刻度盘。如果您必须集成一个恶意的API,该API需要偷偷摸摸的DOM操作,那么您可以使用转义孵化器,使您脱离虚拟DOM层,并访问较低级别的DOM。如果取而代之的是,由于等受Elm启发的工具,您能够使用完全纯函数来编写您的应用程序,那么您将以很少的成本获得许多相同的好处。
最重要的是-我认为不要把类型安全和正确性混为一谈是很重要的。来自Clojure世界的Rich Hickey有一个图表,显示了我个人同意的编程问题:

请注意,静态类型是此层次结构中编程中最不重要的问题的解决方案。如果你想听希基关于类型的更多细节,我鼓励你看看他的Clojure/Conj 2017 keynote address。
发布于 2018-04-01 00:45:17
我将Hyperapp与TypeScript一起使用,到目前为止,它工作得很好。使用tsconfig选项
"jsx": "react",
"jsxFactory": "h",甚至可以使用JSX。
TypeScript启用ES6+功能并添加键入功能。它还可以转换为可读的JavaScript代码。
https://stackoverflow.com/questions/49059542
复制相似问题