Phaser + TypeScript 严格模式

3
我开始使用Phaser.io,并希望创建一个TypeScript项目,充分利用它的编译器。我的意思是在strict模式下运行TS。其中之一的优点(对我来说)是从可空对象中获得额外的安全性。但这正是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成员,然后分配它的值。这就是TypeScript严格模式显示错误的地方:Object is possibly 'null'. 我处理这种情况的最好想法是使用像Maybe这样的单子。但在我看来,这似乎有些过度了。因此,我想知道是否有其他模式或使用Phaser的方法,可以让我在不使用单子的情况下启用严格模式。

你能展示一下错误信息吗? - Przemyslaw Jan Beigert
@PrzemyslawPietrzak 我已经更新了帖子并附上了错误信息。 - dotintegral
1个回答

1
我认为最好的选择是像地图类型一样进行映射。
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;
  }
}

playground

的英文意思是 "

playground

",它是一个包含HTML标签的文本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接