Javascript TypeScript错误:保留字';这';用作名称
我试图让Node.js TypeScript定义正常工作,但WebStorm给了我一个错误列表,其中包含所有相同的消息: 保留字“this”用作名称。这次检查 报告任何使用JavaScript保留字作为名称的情况。 JavaScript规范保留了一些 当前未用作JavaScript关键字。用这些词作为 如果使用更高版本的JavaScript,标识符可能会导致代码中断 使用它们作为关键字 由于返回类型而发生此错误的代码示例: 为什么Javascript TypeScript错误:保留字';这';用作名称,javascript,node.js,typescript,webstorm,keyword,Javascript,Node.js,Typescript,Webstorm,Keyword,我试图让Node.js TypeScript定义正常工作,但WebStorm给了我一个错误列表,其中包含所有相同的消息: 保留字“this”用作名称。这次检查 报告任何使用JavaScript保留字作为名称的情况。 JavaScript规范保留了一些 当前未用作JavaScript关键字。用这些词作为 如果使用更高版本的JavaScript,标识符可能会导致代码中断 使用它们作为关键字 由于返回类型而发生此错误的代码示例: 为什么this关键字不能是一种类型?我是在使用旧的TypeScript
this
关键字不能是一种类型?我是在使用旧的TypeScript编译器,还是打字时出错了
编辑: 为了消除这些错误,我将所有这些
this
类型替换为包含类或接口的类型。例如,将给定示例中的错误更改为:
export interface EventEmitter {
addListener(event: string, listener: Function): EventEmitter;
...
}
尽管如此,这并不能解决实际问题。以下代码在typescript中编译得很好:
export interface E
{
b(): this;
}
class A implements E
{
public b(): any
{
return 123;
}
}
let a = new A();
console.log(a.b());
根据“这”将被解释为“任何”。
所以很可能是webstorm的问题
我是否正在使用旧的TypeScript编译器
是的,至少升级到TS 1.7以获得支持。似乎您使用的是旧版本的WebStorm。WebStorm从v11.0.3开始支持“this”类型。这看起来像WebStorm中的一个bug。我认为SLaks是正确的。它在Atom中对我很好,它是一个。它不会被解释为
任何
。你能向我澄清一下吗。从逻辑上讲,我最初还认为这应该指向所有者类型。但在我的示例中实现接口时遇到了问题。如果我更改为“public b():E”或“public b():A”,它将不会编译。唯一有效的是“任何”。如何以正确的方式实现这样的接口?它有助于。如果您显式地键入它,它应该是:b():this{…}