【问题标题】:TypeScript to js errorTypeScript 到 js 错误
【发布时间】:2012-10-18 01:09:22
【问题描述】:

我正在尝试将关于结合 createjs 和 box 2d 的豪华动物教程转换为 Typescript。到目前为止,我正在制造的混乱似乎正在奏效。但现在我在这条线上得到了Uncaught TypeError: Cannot call method 'push' of undefined

this.actors.push(this);

actors 在 .ts 上定义为 private actors = [];。我尝试了可能的方法,但没有任何工作。有谁知道怎么回事?

app.ts => http://paste.laravel.com/8HM default.html => http://paste.laravel.com/8HN

使用 VS 2012。

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    尝试private actors:TYPE[] = []; 其中TYPE 是您的数组的类型,例如对于字符串数组private actors:string[] = [];

    这似乎对我有用。

    如果不是,那么可能会发布更多代码 - 我无法从您发布的链接中将您的 .ts 文件显示在源代码视图中,而且我无法分辨其中的(几个)脚本中的哪一个您的问题所在的页面。

    【讨论】:

    • 抱歉,同一个链接粘贴了两次。固定。
    • 我无法立即看到问题所在。也许尝试跟踪“this”以确保它实际上是 Box2d,好像演员 var 不会超出范围。
    • 啊……我想我明白了。 this 跟踪为Box2d.actorObject,这意味着this.actors 将是Box2d.actorObject.actors,这是未定义的吗?也许是一个 TS 错误?因为从我记得的介绍视频中,Anders 说 TS 会自动添加that = this,或类似的东西。
    • 我才来得及看一下代码,但看起来正确的闭包是Box2d.actorObject,这就是为什么我建议跟踪this。我不认为这是一个错误 - 它应该很容易修复,无论是通过传递 Box2d 值还是创建一个可以从任何地方引用的静态单例(我一直在使用 TS 中的根控制器进行此操作)访问它更容易,但显然它只适用于某些情况。无论如何,希望你能解决它。
    【解决方案2】:

    好的,问题在于它没有将actorObject 作为方法调用,而是将其创建为对象:new Box2d.actorObject

    我刚刚制作的是它自己的一类,现在一切都很漂亮。

    【讨论】:

      猜你喜欢
      • 2021-12-30
      • 2017-11-12
      • 2018-03-28
      • 2017-10-27
      • 2018-09-08
      • 2016-10-11
      • 2021-05-03
      • 1970-01-01
      • 2021-10-29
      相关资源
      最近更新 更多