接受或反对node缺乏类型安全

Embrace or fight Node's lack of type safety

本文关键字:类型安全 node      更新时间:2023-09-26

我来自一个语言的世界(Delphi, PHP, Java),在那里静态类型和强大的OOP支持并增强了整个体系结构。无论是使用抽象类来定义facade,还是使用接口来支持DI,它们都指导了我开发解决复杂业务问题的体系结构的能力。

NodeJS(更一般地说,Javascript)有一个非常弱的类型感,所以被称为"鸭子类型",我发现我不能在Node中应用传统的(和强大的)技术到同样的程度。如果我想为数据库编写一些facade,当然可以,但是编写mock或存根的人没有方法签名来设计——他/她必须查看我的模块("类")。如果我可以使用接口,这将会容易得多,但实际上,如果没有一些额外的管道,我就做不到。

当在Node中构建复杂的、松散耦合的应用程序时,我应该接受这种类型的缺乏(如果是,如何接受?),还是利用面向Node的OOP库(如DejaVu),从而获得"类型安全",尽管这是以运行时类型检查为代价的。我倾向于第二种,因为它允许我编写带有额外运行时保护层的契约驱动代码。

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