参数隐式具有"任何"类型

Ron*_*nin 10 typescript visual-studio-code typescript-typings

我正在使用visual studio代码进行打字稿项目,在那里我使用了一些第三方npm js库.其中一些不提供任何ts类型(types.d.ts文件),因此每当我使用参数或变量而不指定其类型时,vs代码的linting显示此错误:参数隐式具有"any"类型. 此外,ts不会编译.

我怎样才能防止这种情况发生?

Ron*_*nin 24

首先,要使打字稿容忍参数而不声明其类型,请编辑 tsconfig.js

// disable this rule:
// "strict": true,

// enable this rule:
"noImplicitAny": false
Run Code Online (Sandbox Code Playgroud)

其次,安装tslint npm包作为tslint vs代码扩展的先决条件

npm install -g tslint
Run Code Online (Sandbox Code Playgroud)

第三,安装tslint vs代码扩展

  • 它只是隐藏消息并不能解决问题! (11认同)
  • 如果您没有“tsconfig.js”文件,请在“tsconfig.json”文件中进行相同的更改。 (2认同)

LLL*_*LLL 14

指定类型:(callback:any) => { }例如。我知道这个主题很旧,但我希望它仍可以为其他人保存Google搜索的信息。

  • 仅使用“any”类型来修复编译时错误是一种不好的做法。 (6认同)
  • 这是一个更好的答案。另一种只是隐藏消息,而不是修复它所抱怨的内容。 (4认同)
  • @SerhiiPolishchuk 这不是坏习惯。您的反应就像任何对动态类型语言感到不舒服的人一样,这没关系。这是您在任何具有鸭子类型形式的语言中都会发现的熟悉语法。“any”有效并且可以接受,因为预期对象没有真正的结构。请参阅[文档](https://www.typescriptlang.org/docs/handbook/basic-types.html#any) (2认同)
  • 我对严格的类型提示和动态也很满意,因为我使用的是 5.2 版本的 php。我认为对于那些还不知道为什么应该指定类型的人来说值得一提。请将其添加到您的答案中,让这个世界变得更加安全。人们应该知道真相 - 指定参数的类型可以节省时间和金钱 - 如果您知道确切的类型,请使用它。非常有限的情况需要 <any> 类型。 (2认同)

小智 8

** 我不想修改配置文件并简化打字稿!

这段代码引发了我的错误:

  onDelete(todo) {
    console.log('delete')
    this.deleteTodo.emit(todo)   
  }
Run Code Online (Sandbox Code Playgroud)

我通过添加“任何”类型修复了我的问题:

  onDelete(todo: any) {
    console.log('delete')
  this.deleteTodo.emit(todo)   
  }
Run Code Online (Sandbox Code Playgroud)

  • 尽管我们感谢您的回答,但如果它能够在其他答案之上提供额外的价值,那就更好了。在这种情况下,您的答案不会提供额外的价值,因为 LLL 已经发布了该解决方案。如果之前的答案对您有帮助,一旦您有足够的声誉,您应该投票。 (2认同)

Jay*_*Jay 5

我最终出现以下错误。这是 Bing 上的第一个搜索结果,因此,如果我的解决方案对某人有帮助,请添加我的解决方案。

参数“onPerfEntry”隐式具有“any”类型。TS7006

我是这样解决的。

const reportWebVitals = onPerfEntry  => {
Run Code Online (Sandbox Code Playgroud)

const reportWebVitals = (onPerfEntry : any) => {
Run Code Online (Sandbox Code Playgroud)

我明白这是一件简单的事情,但对于像我这样的初学者来说,我花了一段时间才弄清楚。