Строгий режим Phaser + TypeScript - PullRequest
0 голосов
/ 14 февраля 2019

Я начал свое приключение с 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)
    }
  }
}

Итак, создание nullable *Рекомендуется 1007 * член, а затем присвоить его значение.Вот где строгий режим TypeScript показывает ошибку: Object is possibly 'null'.

Лучшая идея, с которой мне приходилось сталкиваться в этой ситуации, - это использовать монады типа Maybe.Но для меня это кажется излишним.Поэтому мне интересно, есть ли другие шаблоны или способы использования Phaser, которые позволили бы мне включить строгий режим, не заходя так далеко, как использование монад.

1 Ответ

0 голосов
/ 14 февраля 2019

Я думаю, что лучшим вариантом будет просто тип карты, например

class X {
  player: Player | null = null;

  create() {
    this.player = new Player();
  }

  do() {
    (this.player as Player) / 2;
  }
}

Или используйте !, чтобы пропустить начальную проверку свойства

class X {
  player!: number;

  create() {
    this.player = 42;
  }

  do() {
    this.player / 2;
  }
}

детская площадка

...