Javascript typescript中的错误消息,表示函数参数不';t匹配@TypeScript 0.9.1

Javascript typescript中的错误消息,表示函数参数不';t匹配@TypeScript 0.9.1,javascript,typescript,webstorm,Javascript,Typescript,Webstorm,如果您看一下上面的语句,就会发现它只是一些用于将事件侦听器附加到DOM片段的HTML。下面是一些执行相同操作的代码: document.getElementById("someElement").addEventListener('click', function (event) { this._output.innerHTML = this.add( parseInt(this._x.value), parseInt(this._y.value)

如果您看一下上面的语句,就会发现它只是一些用于将事件侦听器附加到DOM片段的HTML。下面是一些执行相同操作的代码:

document.getElementById("someElement").addEventListener('click', function (event) {
    this._output.innerHTML = this.add(
        parseInt(this._x.value),
        parseInt(this._y.value)
    ).toString();
问题是,在第一个代码示例中,TypeScript没有给我任何错误,这意味着
addEventListener
的所有参数都匹配。然而,当我使用第二个时,似乎有一个问题。Typescript说,“参数类型与参数不匹配”

我能做些什么来解决这个问题。我正在Webstorm 7.0 EAP中使用Typescript 0.9.1

更新1 因此,在查看typescript中的主声明文件后,我将代码更改为以下内容,从而解决了最初的问题:

document.getElementById("someElement").addEventListener('click', (event) => {
    this._output.innerHTML = this.add(
        parseInt(this._x.value),
        parseInt(this._y.value)
    ).toString();
});
如果你看一下,我刚刚添加了一个返回类型。现在,我有一个新问题:Typescript抱怨
this.\u output
是一个未解析的变量。这是我的完整typeScript类:

document.getElementById("Add").addEventListener('click',(event):void => {
    this._output.innerHTML = this.add(
        parseInt(this._x.value),
        parseInt(this._y.value)
    ).toString();
类计算器{
私有x:HTMLInputElement;
私有_y:HTMLInputElement;
私有输出:HTMLSpanElement;
构造函数(xID:string、yID:string、outputID:string){
这个.x=document.getElementById(xID);
此._y=document.getElementById(yID);
此._output=document.getElementById(outputID);
这个.makeCalculator();
}
添加(x:编号,y:编号){
返回x+y;
}
减法(x:数字,y:数字){
返回x-y;
}
makeCalculator(){
document.getElementById(“Add”).addEventListener('click',(事件):void=>{
this.\u output.innerHTML=this.add(
parseInt(这个值),
parseInt(这个值)
).toString();
});
document.getElementById(“Subtract”).addEventListener('click',(事件):void=>{
this.\u output.innerHTML=this.subtract(
parseInt(这个值),
parseInt(这个值)
).toString();
});
}
}

如您所见,我正在尝试用typescript制作一个简单的计算器。

当您想使用
this
(它指的是类)的词汇转义值以及它的上下文值(例如,jquery回调中的
this
,它指的是引发事件的元素等)。不能使用fat arrow/lambdas
()=>{}
。您可以使用函数,并自己为类变量存储


然而,在你的代码中,我看到你只想使用
这个
,它引用了这个类,所以lambda
()=>{}
就足够了。您的代码编译良好:

你说“Typescript抱怨这个.\u输出是一个未解析的变量。”在我共享的链接中,它不是。我没有看到要解决的错误:)代码正常;这是WebStorm中的一个bug-请投票支持它
class Calculator {
    private _x:HTMLInputElement;
    private _y:HTMLInputElement;
    private _output:HTMLSpanElement;

    constructor (xID: string, yID: string, outputID: string) {
        this._x = <HTMLInputElement> document.getElementById(xID);
        this._y = <HTMLInputElement> document.getElementById(yID);
        this._output = <HTMLInputElement> document.getElementById(outputID);

        this.makeCalculator();
    }

    add (x: number, y: number) {
        return x + y;
    }

    subtract (x: number, y: number) {
        return x - y;
    }

    makeCalculator () {
        document.getElementById("Add").addEventListener('click',(event):void => {
            this._output.innerHTML = this.add(
                parseInt(this._x.value),
                parseInt(this._y.value)
            ).toString();
        });
        document.getElementById("Subtract").addEventListener('click', (event):void => {
            this._output.innerHTML = this.subtract(
                parseInt(this._x.value),
                parseInt(this._y.value)
            ).toString();
        });
    }
}