添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
文章主要介绍了在TypeScript中遇到的关于this隐式类型为any的报错以及在函数中this为undefined的问题。解决方案包括修改tsconfig.json中的noImplicitThis选项和使用new关键字实例化函数。同时,文章还提到了new表达式可能出现的目标缺少构造签名的错误,解决方法是强制转换为any类型。最后,文章讨论了prototype方法与构造函数的关系。 摘要由CSDN通过智能技术生成

1、参考博文===》① 严格模式 - 知乎 ,② ts的tsconfig.son中文说明 TypeScript Number | 菜鸟教程

2、解决( ts报错“this“ 隐式具有类型 “any“,因为它没有类型注释。

3、解决( 函数内this是undefined 的问题

4、解决( 其目标缺少构造签名的 "new" 表达式隐式具有 "any" 类型。

"this" 隐式具有类型 "any",因为它没有类型注释。

看着是不是很懵逼,明明教程是这么写的,咋就报错了?

不废话,直接说解决方案吧!

然后你先收藏这篇博文===》 ts的tsconfig.json中文说明

看到没, 不允许this有隐式的any类型这个给他改成

noImplicitThis:false

然后新问题又出来了!,怎么this是undefined

搜过几篇博文,还是没看懂,博主是这么理解的,这里this,一般指向父级的父级,我举个例子,下面代码this指向的是fun的父级obj,

var obj={ fun:function(){ console.log(this.a) obj.fun()

而我们现在的代码,如下,他指向的是fun的父级

function fun(i:number){
    console.log(this);
fun(1);

因为我们是vscode调试工具,那我编译成.js之后 浏览器运行一遍给你看,他指向的是window

所以如果想要this是指向本身fun()这个方法,我们得用new这个关键字给他实例化

function fun(i:number){
    console.log(this);
var a=new fun(1);

结果就报错一个 其目标缺少构造签名的 "new" 表达式隐式具有 "any" 类型。

解决办法也很简单

function fun(i:number){
    console.log(this);
var a=new (fun as any)(1);

这样一来,你this也指向fun了,然后就是运行最终demo

function fun(i:number){
    console.log(this)
    this.i=i;
var a=new (fun as any)(1);
fun.prototype.yy="你好啊";
console.log(a.i)
console.log(a.yy)

然后值得一提的是,你们注意看

这个prototype的方法,指向的是fun的构造函数,对的,就是跟class类的构造函数一样的。你要是明白类的构造函数是啥,这里,你就秒懂了。

这篇文章主要用来记录一下Flink中的常见的 报错 以及 解决方案 (以后会持续更新) 1,Table is not an append-only table. Use the toRetrac tS tream() in order to handle add and retract messages. 这个是因为动态表不是append-only模式的,需要用toRetrac tS tream(回撤流)处理...
code 类型 英文描述 中文描述 1002 错误 Unterminated string literal. 未终止的字符串文本。 1003 错误 Identifier expected. 应为标识符。 1005 错误 '{0}' expected. 应为“{0}”。 1006 错误 A file cannot have a reference to i ts elf. 文件不能引用自身。 1009...
这个错误是 TypeScript 编译器在编译过程中发现了一个变量 没有 明确的 类型 注释 ,而且 TypeScript 配置中 没有 开启 隐式 any 类型 的选项。 为了解决这个问题,你需要在代码中为变量 c 添加一个明确的 类型 注释 ,例如: ``` typescript let c: number = 42; 或者在 TypeScript 配置中开启 隐式 any 类型 的选项(不建议这样做),例如: ```json "compilerOptions": { "noImplicitAny": false