Typescript tslints之间的区别是什么;typedef";和打字脚本编译器“;“无mplicitany”吗;?

Typescript tslints之间的区别是什么;typedef";和打字脚本编译器“;“无mplicitany”吗;?,typescript,tslint,Typescript,Tslint,我正在使用tslint来lint我的打字脚本代码。我已经搜索了一段时间,但无法找到使用typescript编译器选项noImplicitAny和tslint中的以下配置之间存在哪些差异(如果有): "no-inferrable-types": [true] "typedef": [ true, "property-declaration", "variable-declaration", // ... etc ... ] 差异是存在的,而且相当大 当变量被识别为any且未直接键

我正在使用tslint来lint我的打字脚本代码。我已经搜索了一段时间,但无法找到使用typescript编译器选项
noImplicitAny
和tslint中的以下配置之间存在哪些差异(如果有):

"no-inferrable-types": [true]
"typedef": [
  true,
  "property-declaration",
  "variable-declaration",
  // ... etc ...
]

差异是存在的,而且相当大

当变量被识别为
any
且未直接键入时,NoImplicite any将抛出错误,例如:

让arr=[]
arr.forEach(item=>item)//变量“arr”隐式具有“any[]”类型。(7005)
//但是
[1,2,3].映射(项=>item)//确定
在第二种情况下,未声明项类型(与第一种情况类似),但是TS编译器知道
变量是什么(必须使用
编号调用
数组
上的映射)

也可以这样编码:

让arr=[]
arr.forEach((项目:任意)=>项目)//确定
不会引发错误。
的类型为any,但它是显式的,而不是隐式的


在linter规则的情况下,它们只是强制您添加类型定义,因此此代码
[1,2,3].map(item=>item)
将通过编译,但linter会将其视为错误。

啊,因此实际上NoImplicitAny使用TypeScript逻辑推断尽可能多的类型,并且只强制我阻止任何类型,而tslint强制我键入所有类型。确切地说,您也可以检查TS中的
无不安全的任何
规则,它也可以阻止任何类型plicite(例如
(arg:any)=>42
)。