下面列出了我们都应该改掉的9个习惯。1.不要使用没有严格模式的tsconfig.json看起来像的严格模式。使用严格模式后应该是什么样子。我们为什么这样做将更严格的规则引入代码库通常需要时间。我们为什么不呢?更严格的规则使将来更容易更改代码,因此花在修复代码上的时间会减少,而花在以后处理存储库上的时间。2.使用||确定默认值它看起来像什么新的应该像什么??运营商,或者更好的是,在参数级别定义折返权。我们为什么要这样做呢??运算符是去年才引入的,如果在长函数的中间使用值,可能很难将它们定义为参数默认值。我们为什么不应该??与||不同,它只返回null或undefined而不是所有的假值。另外,如果你的函数太长以至于你不能在一开始就定义默认值,那么将它们分开可能是个好主意。3.使用any作为类型当我们不确定结构时,应该使用any类型的数据。它应该是什么样子在几乎所有我们输入任何内容的情况下,我们都应该将其输入为未知。为什么我们这样做any很简单,因为它本质上禁用了所有类型检查。通常,甚至在官方类型中也会使用any(例如,上面示例中的response.json()被TypeScript团队键入为Promise)。我们为什么不呢?它实质上禁用了所有类型检查。通过any进入的所有内容都将完全放弃任何类型检查。这会变得很难捕获错误,因为只有当我们对类型结构的假设与运行时代码匹配时,代码才会失败。4.valasSomeType看起来像是强制告诉编译器它无法推断的类型。它应该是什么样子这就是类型保护的用途。我们为什么这样做当我们想要从JavaScript转换为TypeScript时,现有的代码库通常会对TypeScript编译器无法自动派生的类型做出假设。在这些情况下,使用fastasSomeOtherType可以加快转换速度,而不会放松tsconfig.xml中的设置。为什么我们不应该即使现在可以保存断言,当有人移动代码时这可能会改变。类型保护将确保所有检查都是明确的。5.任何测试看起来像什么编写测试时,它会创建不完整的双打。它应该是什么样子如果您需要为测试模拟数据,请将模拟逻辑移动到您模拟的事物旁边并使其可重用。为什么我们这样做虽然在尚未具有良好测试覆盖率的代码库中编写测试通常会呈现复杂的大型数据结构,但只有其中一些是被测特定功能所需要的。短期内不用担心其他属性更简单。为什么我们不应该放弃测试,模拟开发,最近当其中一个属性发生变化时,我们必须在所有测试中而不是在一个中心位置进行更改。此外,在某些情况下,被测代码依赖于我们之前认为不重要的属性,因此必须更新针对该功能的所有测试。6.可选属性Whatitlookslike将属性定义为有时存在有时不存在的可选属性。它应该是什么样子,清楚地表达了哪些模型组合存在,哪些不存在。我们为什么这样做将属性定义为可选类型而不是划分类型更容易,并且生成的代码更少。它还需要对正在开发的产品有深入的了解,并能够在产品假设发生变化时限制代码的使用。为什么我们不应该类型系统的最大好处是它们可以用编译时检查代替运行时检查。随着更快的打字,可以在编译时检查可能被忽视的错误,例如。G。通过确保每个DigitalProduct都有一个sizeInMb。7.OnelettergenericWhatitlookslike给一个名字一个字母的通用名Whatitshouldlooklike应该给一个完整描述的类型名。我们为什么要这样做?我猜这种习惯会养成,因为连官方文档都用一个字母的名字。按T??而不是写全名可以更快更省心地输入。为什么我们不应该这样做泛型类型变量是变量,就像任何其他变量一样。当IDE开始向我们展示这些技术细节时,我们已经放弃了在变量名称中描述变量技术细节的想法。例如。我们通常只写constname='Daniel'而不是conststrName='Daniel'。此外,一个字母的变量名通常有点令人惊讶,因为如果不查看它们的声明就很难理解它们的含义。8.Non-booleanBooleancheckwhatitlookslike通过将值直接传递给if语句来检查值是否已定义。看起来我们可以明确地检查我们关心的案例。我们为什么要做这个?简而言之,写支票看起来更干净,让我们不用去想我们真正想要检查的是什么。为什么我们不应该也许我们应该考虑我们真正想要检查的是什么。例如,上面给出的示例以不同方式处理countOfNewMessages为0的情况。9.BangBang运算符将非布尔值转换为布尔值。它应该是什么样子明确地检查了我们关心的条件。我们为什么这样做对于我们中的一些人来说,理解!就像进入JavaScript世界的一种仪式。它看起来简短明了,如果您已经熟悉它,那么您就知道它是关于什么的。这是将任何值转换为布尔值的简单方法。尤其是在null、undefined和""等假值之间没有明确语义分离的代码库中。为什么我们不应该这样做就像许多捷径和入会仪式一样,使用!!通过促进内部知识混淆代码的真正含义。这使得新开发人员更难访问代码库,无论是一般开发新手还是JavaScript新手。引入细微的错误也很容易。来自“非布尔布尔检查”的countOfNewMessages为0的问题仍然存在!!总结以上9个写TypeScript的习惯,你有几个?如果没有,那么恭喜,如果只有其中的一部分,请尝试摆脱它。今天的内容就这些了,希望能帮到你,如果你觉得有用,记得点赞,关注我,分享给你身边做开发的朋友,说不定能帮到他。最后,感谢阅读,祝编程愉快!