文章主要介绍了在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