[英]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.