簡體   English   中英

Phaser + TypeScript 嚴格模式

[英]Phaser + TypeScript strict mode

我正在 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這樣的 monad 。 但在這一點上,這對我來說似乎是一種矯枉過正。 所以我想知道,是否還有其他使用 Phaser 的模式或方法,這將使我能夠在不使用 monad 的情況下啟用嚴格模式。

我認為最好的選擇就是地圖類型

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;
  }
}

操場

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM