私は非常に単純なことをしようとしています.マウスオーバーで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はまだそこにないためだと思います。.clientX
を削除してそのままevent
にしておくx
と、問題なくログアウトされるため、これはちょっとばかげています。
この非互換性に対処し、このエラーを回避するにはどうすればよいですか?
編集:
申し訳ありませんが、解決策は型宣言を配置することであることがわかりました
(event: MouseEvent) => { ... }
ちょうどこのような。