更多时间用于编码,更少时间用于调试。TypeScript 应用程序中的接口
接口从何而来?
我为什么要使用接口?
所以,我应该一直使用接口吗?
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
本文旨在加深您对接口本质的理解,而不仅仅是教您如何构建接口。夯实编程概念基础将提升您的开发能力,让您更好地为面试和职业生涯做好准备。
如果你碰巧接触过用 TypeScript 编写的应用程序,你可能遇到过类似这样的情况……
interface Person {
hairColor: string;
height?: number;
[prop: string]: any;
}
我们称之为接口,它们非常棒,因为它们允许我们定义输入对象的结构,防止不必要的属性或方法渗入数据。接口通过检查代码接收到的输入是否符合我们在接口中设置的数据类型来实现这一点。这有助于我们的应用程序按预期运行。
然而,如果你像我一样,从未真正接触过像 Java 或 C# 那样严格的数据类型,那么面向接口编程可能会是一个挑战。毕竟,像 JavaScript 这样的动态语言(鸭子类型)不需要我们声明数据类型,这使得它们更容易学习。既然面向严格类型接口编程如此困难,为什么还要使用它们呢?让我们来探讨一下这个问题。
接口从何而来?
虽然我认为理解面向接口编程背后的完整原理非常重要,但我还是会简要概括一下:a) 这方面内容很多,足以单独写一篇文章;b) 许多比我更优秀的开发者已经就此主题撰写过文章。简而言之,我们编写的编程语言实际上是一组指令,用于指导计算机运行我们的应用程序。这些指令一次只能处理 4 到 8 个字节,因此在代码编译之前声明数据类型已经完成了一部分前期工作,使计算机能够以最佳状态运行。
将两种不同的数据类型(例如字符串和数字)连接起来会增加计算机的计算量;尤其当这两种数据类型实际上应该是同一种类型时更是如此。通过在编写代码时声明数据类型,我们可以减少计算机读取指令所需的时间。这就是强类型语言存在的意义。
我为什么要使用接口?
花时间调试代码或解决QA发现的问题可能非常令人头疼。对我来说,比卡在某个问题上更糟糕的事情,莫过于好不容易完成一个新功能,却发现还得回头修复一大堆bug。
如果你采用的是迭代开发模式,那么调试时间通常不会被计入开发该功能的初始预估时间中。围绕接口构建代码会花费更多时间,但这也能让你和你的团队有更多时间进行编码,从而更好地在迭代计划中预估新功能的开发时间。
所以,我应该一直使用接口吗?
不,就像任何语言或框架一样,JavaScript 的严格类型也有其适用的时机和场景。如果你正在开发一个为期两个月的小型项目,而且没有后端,那么严格类型很可能会拖慢你的进度。虽然这类项目不可能完全没有 bug,除非你已经在预算中加入了维护费用,否则时间对你来说并不宽裕。
然而,减少修复 bug 的时间意味着有更多的时间来实现新功能,所以最终要考虑的是你拥有的时间,以及你和你的团队需要多长时间才能适应严格类型并提高效率。
个人偏好也是一个需要考虑的因素,不过不尝试过其他方法就无法形成偏好。我承认,我以前对接口编程感到很沮丧(尤其是在早期),但用得越多,我就越喜欢它们。不过,就像动态类型一样,严格类型也不适合所有人,这完全没问题。多种语言的存在自有其道理,但如果你还没尝试过严格类型,我建议你试一试。
文章来源:https://dev.to/keevcodes/more-time-coding-less-time-debugging-interfaces-in-javascript-applications-31f7