我应该使用noImplicitAnyTypeScript编译器标志吗?noImplicitAny编译器选项所做的基本上是将TypeScript从可选类型语言转换为强制类型检查语言。这使得TypeScript离成为JavaScript的超集更远了一点,因为一个简单的:functionlogMe(x){console.log(x);}//errorTS7006:Parameter'x'implicitlyhasan'any'type。也会出错——你必须显式声明x的类型为any:functionlogMe(x:any){console.log(x);}//OK这意味着如果你想将现有的JS代码库迁移到TS,那么除了更改文件扩展名之外,您还必须做一些更复杂的事情。也意味着在写代码的时候,需要多注意类型,不指定类型,编译器总会“报错”。由于在现实情况下显式声明any被认为是不好的做法,因此您需要在开发过程的早期分配正确的类型。如果没有明确的声明,这可能意味着“我懒得在此处正确注释类型”。这是好是坏备受争议,社区似乎在这个问题上存在分歧。以下是一些行业领先的TypeScript项目以及它们是否使用noImplicitAny编译器标志:ProjectUsesnoImplicitAnyAngularYESRxJSYESVSCodeNOBabylon。并尽早发现错误。如果您想在整个项目代码中享受这种好处,您不应该只在某处添加类型——在任何地方添加它们,就完成了。否则你会冒着做额外思考的风险,比如:“好吧,我应该在这里添加类型吗?我有点懒,但这很好,但我还有其他工作要做......”让我们明天再做。所以我的建议是将noImplicitAny设置为true。
