首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phaser + TypeScript严格模式

Phaser + TypeScript严格模式
EN

Stack Overflow用户
提问于 2019-02-14 21:43:15
回答 1查看 100关注 0票数 3

我从Phaser.io开始我的冒险之旅,我想用TypeScript创建一个充分利用它的编译器的项目。我的意思是在strict模式下运行TS。其中一个优点(对我来说)是来自可空对象的额外安全性。这就是它与Phaser不能很好配合的地方。

到目前为止,我看到的所有示例都建议使用以下模式:

代码语言:javascript
复制
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这样的monads。但在这一点上,对我来说,这似乎有点过头了。因此,我想知道,如果有其他模式或使用Phaser的方法,这将允许我在不使用monads的情况下打开严格模式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-14 22:04:39

我认为最好的选择就是像这样的地图类型

代码语言:javascript
复制
class X {
  player: Player | null = null;

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

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

或使用!跳过初始属性检查

代码语言:javascript
复制
class X {
  player!: number;

  create() {
    this.player = 42;
  }

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

playground

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54691849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档