资讯专栏INFORMATION COLUMN

TypeScript最佳实践:是否使用noImplicitAny

shiguibiao / 2828人阅读

摘要:我应该使用编译器标志吗编译器选项所做的,基本上是将从可选类型语言转换为强制类型检验语言。由于在实际情况中显式地声明被认为是不好的实践,所以在开发过程的早期,您就需要分配正确的类型。因此,我的建议是将设置为。

我应该使用noImplicitAny TypeScript编译器标志吗?

noImplicitAny编译器选项所做的,基本上是将TypeScript从可选类型语言转换为强制类型检验语言。这使得TypeScript离JavaScript的超集稍微远了一些,因为简单的:

function logMe(x) {
  console.log(x);
}
// error TS7006: Parameter "x" implicitly has an "any" type.

也将报错——你必须明确声明x的类型为any:

function logMe(x: any) {
  console.log(x);
}
 // OK

这意味着,如果你要把现有的JS代码库迁移到TS,那除了更改文件扩展名,你还得做一些较复杂的东西。这还意味着,在编写代码时,您需要更多地关注类型,如果不指定类型,编译器就总是会「抱怨」。由于在实际情况中显式地声明any被认为是不好的实践,所以在开发过程的早期,您就需要分配正确的类型。如果没有显式的声明,这可能意味着「我太懒了,没有正确地注释这里的类型」。

这样子到底是好是坏是有很大争议的,社区在这个问题上似乎存在分歧。下面是一些业界领先的TypeScript项目,以及它们是否使用了noImplicitAny编译器标志:

Project Uses noImplicitAny
Angular YES
RxJS YES
VSCode NO
Babylon.js NO

接下来下面是我的观点:我们使用TypeScript,是因为类型提供了有意义的额外信息,可以作为文档、并在早期捕获错误。如果想在项目的代码中都享受这种益处,那就不应该只在某个地方添加类型——把它们添加到任何地方,就可以完成了。

否则你就有可能做出如下额外的思考:

“嗯,我应该在这里添加类型吗?我有点懒,但这很好,但我还有其他工作要做……「我们明天再做吧。」

因此,我的建议是将noImplicitAny设置为true

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110250.html

相关文章

  • TypeScript最佳实践是否使用strictnullcheck

    摘要:因为标志在时添加的,所以它的使用还没有那么广泛。截至年月,项目和项目中使用了该标志,而或都没有使用该标志。如果执行条件检查可以推断某些内容是非空的。然而,对于三元运算符来说,不幸的是情况并非如此。 原文2017年7月发布并于2017年9月更新strictnullcheck(严格的null检查) 我应该使用strictnullcheck TypeScript编译器标志吗? 空指针是最常...

    张汉庆 评论0 收藏0
  • 翻译 | 开始使用 TypeScript 和 React

    摘要:原文地址原文作者译者校对者和其他人有一些关于比较好的博文,跟随这些博文,我最近开始使用。今天,我将展示如何从零开始建立一个工程,以及如何使用管理构建过程。我也将陈述关于的第一印象,尤其是使用和。 原文地址:Getting started with TypeScript and React 原文作者:Jack_Franklin 译者:luxj 校对者:veizz Tom Dale...

    superw 评论0 收藏0
  • Angular系列之AoT编译

    摘要:编译在运行时才揭露它们,那样有点太晚了。这是减少应用程序占用空间的最有效的技术之一。这将在未来得到改变。当前的最佳实践是在开发器使用编译,然后在发布产品前切换到编译 概览 众所周知, angular应用在可执行之前, angular应用中的组件和模板必须被转化为可以被浏览器识别的javascript代码, 而这种转化正是通过angualr自身的编译器所执行的. angular提供了两种...

    Object 评论0 收藏0
  • 从安装认识Angular 2

    摘要:首先,要确认安装了,并且创建了目录并执行初始化。想必看见上面的那么多包会一脸懵逼,没关系,我第一眼看见这些的那刻,和你现在的表情一样,下面在适当的时候我会逐个解释的,你只需要相信我上面的包都是跑所必须的,缺一不可。 关于介绍,只说一句:Angular 2是一个强大、全面、庞大的MVVM框架。 安装 安装,也算是一个坎,因为你需要安装一大堆东西,却不知道每个东西是做什么的,尽管有Angu...

    xietao3 评论0 收藏0
  • javascript 迁移 typescript 实践

    摘要:但是,从长远来看,尤其是多人协作的项目,还是很有必要的。第二参数为了某些场景下要大写强调,只需要传入即可自动将结果转成大写。这个有可能是业务上线了之后才发生,直接导致业务不可用。而这也被证明是个好的编码方式。 只是抱着尝试的心态对项目进行了迁移,体验了一番typeScript的强大,当然,习惯了JavaScript的灵活,弱类型,刚用上typeScript时会很不适应,犹如懒散惯了的人...

    niceforbear 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<