当Typescript检查经典JS类时,如何解决“'this'隐式具有类型'any'”

斯图尔特·K

我有一些使用经典JS类的旧代码,我想对它们进行类型检查。例如:

/**
 * @constructor
 */
function Test() {
    this.x = 1;
}

但是,当我运行tsc --noImplicitThis --noEmit --allowJs --checkJs test.js输入check时,出现以下错误:

test.js:5:5 - error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation.

5     this.x = 1;
      ~~~~

我无法通过查看https://github.com/Microsoft/TypeScript/wiki/JsDoc-support-in-JavaScript或仅仅通过猜测来找到任何类型注释来解决此错误有办法吗?

亚伦比尔

这是noImplicitThis产生这个错误。您需要使用一个this参数来指定this期望的类型

使用JSDoc时,可以使用@this注释

/**
 * @constructor
 * @this Test
 */
function Test() {
    this.x = 1;
}

在Typescript中,它写为function Test(this: Point) { ... }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Node + TypeScript:“ this”隐式具有类型“ any”

React Typescript:元素隐式地具有“ any”类型,因为类型没有索引签名

TypeScript / ReactJS / setTimeout:'this'隐式地具有'any'类型,因为它没有类型注释。

TypeScript:'this' 隐式具有类型 'any',因为它没有类型注释

D3.js:'this' 隐式具有类型 'any',因为它没有类型注释

TypeScript + ES6 Map +对象类型的索引签名隐式具有“ any”类型

TypeScript:对象类型的索引签名隐式具有“ any”类型

Typescript / nodejs:变量在某些位置隐式具有类型“ any”

react / typescript:参数“ props”隐式具有“ any”类型错误

Direct-vuex在定义Getter时出错:“函数隐式具有返回类型'any'...”

如何修复redux-observable参数'action $'隐式具有'any'类型

变量“ a”隐式具有“ any []”类型

参数隐式具有“ any”类型

Typescript错误:元素隐式具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

TypeScript:隐式具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

TypeScript - 元素隐式具有“any”类型,因为“storyFile”类型的表达式不能用于索引类型“{}”

Typescript-React State:元素隐式具有“ any”类型,因为类型“ State”没有索引签名

Typescript:TS7017对象类型的索引签名在循环中隐式具有“ any”类型

TypeScript TS7015:元素隐式地具有“ any”类型,因为索引表达式不是“ number”类型

Vuex Typescript我收到错误“成员'someMutation'隐式具有'any'类型”。在Component.ts文件中

找不到模块“模块名称”的声明文件。'/path/to/module-name.js'隐式具有'any'类型

TypeScript-元素隐式地具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

map()中的Typescript错误:元素隐式具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

参数“ dispatch”隐式具有“ any”类型

函数隐式具有返回类型“ any”错误

为什么参数“ props”隐式具有“ any”类型?

错误消息:成员“ makes”隐式具有“ any”类型

绑定元素'Component'隐式具有'any'类型.ts

绑定元素“ title”隐式具有“ any”类型