javascript - 拥抱或对抗 Node 缺乏类型安全的问题

标签 javascript node.js oop duck-typing

我来自一个语言世界(Delphi、PHP、Java),其中静态类型和强大的 OOP 依从性支撑并增强了整体架构。无论是使用抽象类来定义门面,还是使用接口(interface)来支持 DI,它们都指导了我开发解决复杂业务问题的架构的能力。

NodeJS(更一般地说,Javascript)的类型意识非常弱,即所谓的“鸭子类型(duck typing)”,我发现我无法在 Node.js 中同样程度地应用传统(和强大的)技术。如果我想为数据库编写一些外观,我当然可以,但是编写模拟或 stub 的人没有方法签名来设计——他/她必须查看我的模块(“类”)。如果我可以使用接口(interface),这会容易得多,但实际上,如果没有一些额外的管道,我就做不到。

在 Node 中构建复杂、松散耦合的应用程序时,我应该接受这种无需输入的特性(如果是,如何?),或者利用 Node 的 OOP 库(例如 DejaVu)从而获得“类型安全”,尽管以运行时类型检查为代价。我倾向于第二种,因为它允许我编写带有附加运行时保护层的合约驱动代码。

最佳答案

弱类型(我的意思是弱,不是静态的,动态的,隐式的,显式的等等)阻碍了健壮代码的开发,而 Typescript 编译成 JavaScript 有助于解决这个问题。

关于javascript - 拥抱或对抗 Node 缺乏类型安全的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24229264/

相关文章:

android - 委派经理是一个好的设计理念吗?

javascript - 关于开始node.js的一些问题

node.js - Express Session cookie 未保存在 Chrome 中?

JavaScript - 匹配不在 <a> 或属性内的链接

javascript - VS代码: trigger organizeImports when git staging

javascript - 使用 Express/Sendgrid 将电子邮件模板用于联系表单

c# - 什么是标记接口(interface)?

c - C语言的基本封装

javascript - element.getBoundingClientRect() 在 FF 和 Chrome 中返回错误坐标

javascript - 通过不显眼的验证以 asp.net mvc 形式动态添加 bootstraph glyphicon