Javascript TypeScript错误:保留字';这';用作名称

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

我试图让Node.js TypeScript定义正常工作,但WebStorm给了我一个错误列表,其中包含所有相同的消息:

保留字“this”用作名称。这次检查 报告任何使用JavaScript保留字作为名称的情况。 JavaScript规范保留了一些 当前未用作JavaScript关键字。用这些词作为 如果使用更高版本的JavaScript,标识符可能会导致代码中断 使用它们作为关键字

由于返回类型而发生此错误的代码示例:

为什么
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{…}