document.getElementById("someElement").addEventListener('click', function (event) {
this._output.innerHTML = this.add(
parseInt(this._x.value),
parseInt(this._y.value)
).toString();
如果您看一下上面的语句,您会发现它只是一些用于将事件侦听器附加到 DOM 的 HTML。下面是一些做同样事情的代码:
document.getElementById("someElement").addEventListener('click', (event) => {
this._output.innerHTML = this.add(
parseInt(this._x.value),
parseInt(this._y.value)
).toString();
});
这是问题所在,在第一个代码示例中,TypeScript 没有给我任何错误,这意味着所有参数都addEventListener
匹配。但是,当我使用第二个时,似乎出现了问题。打字稿说,“参数类型与参数不匹配”。
我能做些什么来解决这个问题。我正在使用带有 Webstorm 7.0 EAP 的 Typescript 0.9.1。
更新 1
因此,在查看 typescript 中的主声明文件后,我通过将代码更改为以下内容来解决我的初始问题:
document.getElementById("Add").addEventListener('click',(event):void => {
this._output.innerHTML = this.add(
parseInt(this._x.value),
parseInt(this._y.value)
).toString();
如果你看一下,我只是添加了一个返回类型。现在,我有一个新问题:Typescript 抱怨这this._output
是一个未解决的变量。这是我完整的 typeScript 类:
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();
});
}
}
如您所见,我正在尝试用打字稿制作一个简单的计算器。