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

Types 是否有任何JavaScript库可以向Hyperapp添加类型安全性?,types,elm,hyperapp,Types,Elm,Hyperapp,我正在考虑在我的下一个项目中使用Hyperapp,但我注意到,虽然它类似于Elm,但它不提供类型安全保证(这是Elm的最佳特性之一)。是否有JavaScript库的组合(可能与Hyperapp一起使用)可以为您提供Elm所提供的类型安全性?在其核心,构建软件是使用具有不同权衡的抽象。Hyperapp以可靠性为代价对熟悉的语法进行了权衡,因为Hyperapp使用的是JavaScript,默认情况下是可变的。对于可变变量,您不能做出保证,因为根据定义它是不确定的。但是,您可以测试代码,使其更具确定性

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

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

长话短说,如果你想要类型安全,你不能仅仅依靠JavaScript。您可以像Purescript、Fable和Elm-do一样转换为JavaScript。如果你想更可靠,我建议你花点时间学习其中一种语言


祝你好运

Hyperapp提供了许多基本工具,您可以在JavaScript生态系统中以功能性风格构建应用程序,而无需构建步骤即可开始。与Elm和Reason等更严格的解决方案相比,这是一个显著更低的进入壁垒

若你们想一想从命令式到功能式的刻度,就像一个刻度盘,Hyperapp会把刻度盘转到功能性的一半。如何旋转拨号盘取决于用户自己。如果您必须集成一个需要偷偷进行DOM操作的恶意API,那么您就有了逃生舱口,将您带出虚拟DOM层并访问较低级别的DOM。相反,如果您能够使用完全纯功能编写应用程序,这要归功于受Elm like启发的工具,那么您将以极低的成本获得许多相同的好处

最重要的是,我认为重要的是不要将类型安全性与正确性混为一谈。Clojure世界的Rich Hickey有一张图表,显示了我个人同意的编程问题:
请注意,静态类型是这个层次结构中编程中最不重要问题的解决方案。如果你想了解Hickey对类型的更多想法,我建议你看看他的。

我将Hyperapp与TypeScript结合使用,到目前为止效果很好。使用
tsconfig
选项

"jsx": "react",
"jsxFactory": "h",
甚至可以使用JSX


TypeScript启用ES6+功能并添加键入。它还可以传输到可读的JavaScript代码。

我认为类型系统是Elm的很大一部分,如果没有它,您将失去Elm可以承诺的许多东西。也就是说,在我有限的经验中,Flow类似于Elm的类型系统。Flow和Hyperapp可以给人一种类似于Elm的开发感觉。我认为强类型可以用来解决更多的问题,而不仅仅是底层的两个问题——特别是在像Elm这样的环境中。有人可能会合理地争辩说,像Elm或F#中那样的类型系统,使用得当也可以帮助您解决域复杂性和误解……我想我的问题是,如果我在任何地方都应用typescript,我会从类型安全保证中获益吗?typescript在任何“插入”的地方都能为您提供类型安全。如果代码库中有一个文件是用纯JS编写的,那么它就不安全了。当TypeScript文件中的变量类型为
any
时,情况相同。但由于这些权衡,您通常可以在项目中引入TS,而不会遇到更大的问题。这太棒了。就我个人而言,如果typescript具备所有这些,我觉得elm有点失去了它的价值。是的,typescript似乎是目前最流行的传输工具()。