TypeScript干掉所有已知Bug!

昨天我要分享的CSDN

作者|马特伊兰(Matt Eland)

翻译器| Crescent Moon,编辑|胡伟农产品| CSDN(ID:CSDNnews)每个人都有这种艰难的经历,每个人都有一个不眠之夜,努力争取正确的程序。我的程序是一个用JavaScript编写的单页应用程序,仅使用JQuery和JavaScript,但这是我编写过的最糟糕的程序。当我切换到TypeScript时,它可以帮助我消除所有已知的错误并防止再次发生所有类型的错误。切换到TypeScript后的第一个好处是,所有方法调用参数都太多或太少,或者在方法名拼写错误的地方,可以立即找到它(代码非常大,没有文档,编写者大多没有经验,并且没有标准化的编程经验)。让tsc(TypeScript编译器)强制所有代码的编译,不存在的方法将终止编译。字符串类型的变量程序中有些地方会将数字类型的变量与数字进行比较。可以使用==进行比较,因为JavaScript会尝试将非数字转换为实数,但是当使用===比较时(出于安全性和性能,这是必要的),您会发现'1'===1将返回false,从而导致很多错误。通过声明所有具有显式类型(例如:数字)的参数和变量,您可以捕获此类型的所有错误。我们使用ESLint清理TypeScript代码,因为TSLint将于2019年某个时候被弃用.ESLint可以帮助我们捕获可能导致问题的地方,例如未分配给变量的返回值或其他可能导致不正确的问题。由于我们在构建过程中添加了ESLint,因此每个构建都会捕获一个lint错误。除了ESLint之外,我们还使用Prettier格式化代码,并最终获得了免费的统一代码样式。引入类由于我们使用编译器来捕获明显的错误,而使用linting来捕获新的错误,因此,我们认为可以安全地将JavaScript函数移入类中,以获取更有条理,标准化的TypeScript代码,并找出可以重用和统一的所有内容。消除全球地位

由于我们引入了类,因此必须将状态从全局范围移到每个类。似乎除了明显的方法调用错误和不同数据类型的值比较之外,不良的状态管理是第二大错误的根源。尽管在这个项目中,我们没有时间引入像redux这样的框架,但是将状态移入每个类中就足以让我们找到不正确地操纵状态并对其进行纠正的代码。可测性

将许多面食样式的JavaScript代码更改为单独的类,我们可以为每个类编写Jest测试用例,以提高安全性和对更改应用程序的信心。最后,我们发现从开发,质量保证和最终用户的角度来看,将旧的JavaScript遗留应用程序移植到TypeScript是一个非常优美的举动,因为它引入了额外的严格性和安全性指标。可以帮助我们使应用程序更稳定,并且在修改代码时不会破坏现有代码。当然,我没有将应用程序转换为Angular,也没有添加像Redux这样的状态管理库。但最后,该项目提前完成,没有任何失败。在此过程中,解决了许多现有的错误,从而证明了与其在JavaScript中逐个修改bug并胆怯地期望一切都正确,不如将应用程序转换为TypeScript以节省时间。每个项目都是不同的,但是我强烈建议您,如果要重新组织旧的应用程序,应考虑使用TypeScript。原文:本文适用于CSDN翻译,请注明出处。收款报告投诉

作者|马特伊兰(Matt Eland)

翻译器| Crescent Moon,编辑|胡伟农产品| CSDN(ID:CSDNnews)每个人都有这种艰难的经历,每个人都有一个不眠之夜,努力争取正确的程序。我的程序是一个用JavaScript编写的单页应用程序,仅使用JQuery和JavaScript,但这是我编写过的最糟糕的程序。当我切换到TypeScript时,它可以帮助我消除所有已知的错误并防止再次发生所有类型的错误。切换到TypeScript后的第一个好处是,所有方法调用参数都太多或太少,或者在方法名拼写错误的地方,可以立即找到它(代码非常大,没有文档,编写者大多没有经验,并且没有标准化的编程经验)。让tsc(TypeScript编译器)强制所有代码的编译,不存在的方法将终止编译。字符串类型的变量程序中有些地方会将数字类型的变量与数字进行比较。可以使用==进行比较,因为JavaScript会尝试将非数字转换为实数,但是当使用===比较时(出于安全性和性能,这是必要的),您会发现'1'===1将返回false,从而导致很多错误。通过声明所有具有显式类型(例如:数字)的参数和变量,您可以捕获此类型的所有错误。我们使用ESLint清理TypeScript代码,因为TSLint将于2019年某个时候被弃用.ESLint可以帮助我们捕获可能导致问题的地方,例如未分配给变量的返回值或其他可能导致不正确的问题。由于我们在构建过程中添加了ESLint,因此每个构建都会捕获一个lint错误。除了ESLint之外,我们还使用Prettier格式化代码,并最终获得了免费的统一代码样式。引入类由于我们使用编译器来捕获明显的错误,而使用linting来捕获新的错误,因此,我们认为可以安全地将JavaScript函数移入类中,以获取更有条理,标准化的TypeScript代码,并找出可以重用和统一的所有内容。消除全球地位

由于我们引入了类,因此必须将状态从全局范围移到每个类。似乎除了明显的方法调用错误和不同数据类型的值比较之外,不良的状态管理是第二大错误的根源。尽管在这个项目中,我们没有时间引入像redux这样的框架,但是将状态移入每个类中就足以让我们找到不正确地操纵状态并对其进行纠正的代码。可测性

将许多面食样式的JavaScript代码更改为单独的类,我们可以为每个类编写Jest测试用例,以提高安全性和对更改应用程序的信心。最后,我们发现从开发,质量保证和最终用户的角度来看,将旧的JavaScript遗留应用程序移植到TypeScript是一个非常优美的举动,因为它引入了额外的严格性和安全性指标。可以帮助我们使应用程序更稳定,并且在修改代码时不会破坏现有代码。当然,我没有将应用程序转换为Angular,也没有添加像Redux这样的状态管理库。但最后,该项目提前完成,没有任何失败。在此过程中,解决了许多现有的错误,从而证明了与其在JavaScript中逐个修改bug并胆怯地期望一切都正确,不如将应用程序转换为TypeScript以节省时间。每个项目都是不同的,但是我强烈建议您,如果要重新组织旧的应用程序,应考虑使用TypeScript。原文:本文适用于CSDN翻译,请注明出处。

新时代科技新长征点燃创新发展新引擎