是否有任何JavaScript库可以为Hyperapp添加类型安全性?

时间:2018-03-01 22:14:45

标签: types elm hyperapp

我考虑将Hyperapp用于我的下一个项目,但我注意到虽然它类似于Elm,但它不提供类型安全保证(这是关于Elm的最佳功能之一)。是否有一些JavaScript库(可能与Hyperapp一起使用)可以为您提供Elm的类型安全性?

3 个答案:

答案 0 :(得分:4)

构建软件的核心是使用具有不同权衡的抽象。 Hyperapp以可靠性为代价进行熟悉语法的权衡,因为Hyperapp使用的JavaScript默认是可变的。对于可变变量,您无法进行保证,因为它根据定义是不确定的。但是,您可以测试代码以使其更具确定性。但是,这是另一个权衡。

长话短说,如果你想要类型安全,你就不能单靠JavaScript。您可以像Purescript,Fable和Elm那样转换为JavaScript。如果您想要更高的可靠性,我建议您花些时间学习其中一种语言。

祝你好运!

答案 1 :(得分:3)

Hyperapp提供了许多基本工具,您可以在功能样式中构建应用程序,同时保留在JavaScript生态系统中,而不需要构建步骤即可开始。与Elm和Reason等更严格的解决方案相比,这是一个明显较低的准入门槛。

如果你想到从命令式到功能性风格的刻度,就像表盘一样,Hyperapp可以通过将表盘转到中间位置来启动功能。作为用户决定如何旋转该表盘取决于您。如果您需要集成需要偷偷摸摸的DOM操作的恶意API,那么您可以使用逃生舱,将您带出虚拟DOM层并访问较低级别的DOM。相反,您可以使用完全纯粹的功能来编写您的应用程序,这要归功于Elm之类的工具,例如effects as data,那么您可以以非常低的成本获得许多相同的好处。

最重要的是 - 我认为不要将类型安全与正确性混为一谈很重要。来自Clojure世界的Rich Hickey有一个图表,显示了我个人同意的编程问题:The Problems of Programming 请注意,静态类型是此层次结构中编程中最不重要问题的解决方案。如果您想了解有关Hickey关于类型的想法的更多细节,我建议您查看他的Clojure/Conj 2017 keynote address

答案 2 :(得分:1)

我使用Hyperapp和TypeScript,它到目前为止工作正常。使用tsconfig选项

"jsx": "react",
"jsxFactory": "h",

甚至可以使用JSX。

TypeScript支持ES6 +功能并添加输入。它也转化为可读的JavaScript代码。