我正在尝试使用typesript将键盘功能添加到我的蛇游戏项目中,但是在代码的第42和43行中出现了错误,这些错误是:
解析错误:“;”expected.eslint意外关键字或identifier.ts(1434)
函数实现在declaration.ts(2391)之后丢失或没有立即实现
(3)在第2行的“窗口”上空盘旋时,还会出现以下错误:
重复标识符‘window’..ts(2300)
interface keyUtil{
value:string,
isDown:boolean,
isUp:boolean,
press:undefined|any,
release:undefined|any
}
export class keyboard implements keyUtil{
// privatethis:object = {};
constructor(public value:string, public isDown:boolean, public isUp:boolean, public press:any, public release:any){
this.value = value;
this.isDown = false;
this.isUp = true;
this.press = undefined;
this.release = undefined;
}
downHandler = (event: KeyboardEvent) => {
if (event.key === this.value) {
if (this.isUp && this.press) this.press();
this.isDown = true;
this.isUp = false;
event.preventDefault();
}
};
upHandler = (event: KeyboardEvent) => {
if (event.key === this.value) {
if (this.isDown && this.release) this.release();
this.isDown = false;
this.isUp = true;
event.preventDefault();
}
};
const downListener = this.downHandler.bind(this);
const upListener = this.upHandler.bind(this);
//Error on following two lines:
window.addEventListener(type: "keydown", downListener:any):void;
window.addEventListener(type: "keyup", upListener:any):void;
unsubscribe = () => {
window.removeEventListener("keydown", this.downListener);
window.removeEventListener("keyup", this.upListener);
};
}
我尝试的解决方案是将tsconfig文件的noImplicitAny属性修改为false。当我用js编写函数时,我试图将文件转换为ts。以下是js代码:
function keyboard(value) {
let key = {};
key.value = value;
key.isDown = false;
key.isUp = true;
key.press = undefined;
key.release = undefined;
key.downHandler = event => {
if (event.key === key.value) {
if (key.isUp && key.press) key.press();
key.isDown = true;
key.isUp = false;
event.preventDefault();
}
};
key.upHandler = event => {
if (event.key === key.value) {
if (key.isDown && key.release) key.release();
key.isDown = false;
key.isUp = true;
event.preventDefault();
}
};
const downListener = key.downHandler.bind(key);
const upListener = key.upHandler.bind(key);
window.addEventListener(
"keydown", downListener, false
);
window.addEventListener(
"keyup", upListener, false
);
key.unsubscribe = () => {
window.removeEventListener("keydown", downListener);
window.removeEventListener("keyup", upListener);
};
return key;
}
发布于 2021-07-30 09:32:08
您将函数定义与函数调用混合在一起。
这是一个(错误的)函数定义:
//Error on following two lines:
window.addEventListener(type: "keydown", downListener:any):void;
window.addEventListener(type: "keyup", upListener:any):void;
应该将类构造函数作为函数调用放在类构造函数上。
constructor() {
window.addEventListener("keydown", downListener);
window.addEventListener("keyup", upListener);
}
https://stackoverflow.com/questions/68588537
复制相似问题