Я начинаю свое приключение с Phaser.io, и я хотел создать проект на TypeScript, который полностью использовал бы его компилятор. Под этим я подразумеваю запуск TS в режиме strict
. Одно из преимуществ (для меня) - дополнительная безопасность от обнуляемого объекта. И вот здесь он не очень хорошо сочетается с Phaser.
Все примеры, которые я видел до сих пор, предполагают использование следующего шаблона:
class MyScene extends Phaser.Scene {
player: null;
create() {
this.player = this.physics.add.image(...)
}
update() {
//...
if (cursors.left.isDown) {
this.player.setVelocity(-100)
}
}
}
Поэтому рекомендуется создать член player
, допускающий значение NULL, а затем присвоить ему значение. Здесь строгий режим TypeScript показывает ошибку: Object is possibly 'null'.
Лучшая идея, которую мне пришлось разобраться в этой ситуации, - использовать монады типа Maybe
. Но на данный момент это кажется мне излишним. Поэтому мне интересно, есть ли другие шаблоны или способы использования Phaser, которые позволили бы мне включить строгий режим, не доходя до монад.