我想做一些非常简单的事情,只需在鼠标悬停时记录event.clientX,并且这是模块代码:
import { Observable, Subject } from 'rxjs';
import StarSky from './starsky';
import constants from '../constants/index';
const HERO_Y = constants.HERO_Y(StarSky.canvas);
export const StarShip = Observable.fromEvent(StarSky.canvas,'mousemove')
.map((event)=> {
return {
x: event.clientX,
y: HERO_Y
}
})
.startWith({
x: StarSky.canvas.width /2,
y: HERO_Y
})
然后我稍后订阅它,就像这样:
StarShip.subscribe(x => console.log(x));
发生的情况是typescript编译器一直抛出这种特定类型的错误:
Property clientX does not exist on type {}
我猜测这是因为它仍然是一个空的Rx主题,并且clientX还没有初始化,因为需要通过mouseover来初始化。这有点傻,因为如果我删除.clientX,只留下事件作为x,它就可以正常记录了。
如何解决这种不兼容性并解决此错误?
编辑:
很抱歉,刚刚发现解决方法是放置类型声明。
(event: MouseEvent) => { ... }
就像这样。