打字稿传递内联无效函数错误
Typescript Pass Inline Void Function Error
我有一个关于 TypeScript 和函数作为参数的问题。我遇到了 BabylonJS 的问题,但我认为,它是关于所有 TypeScript 的。我将渲染函数存储在 class:
中
this._renderloop = newScene.render; // render(): void; is a function of BabylonJS.Scene class
并通过
调用 BabylonJS renderLoop
this._webglEngine.runRenderLoop(this._renderloop);
这给我一些关于场景未初始化的属性(例如 _activeParticles)的错误。
但是当我通过以下方式设置渲染循环时:
this._renderloop = () => newScene.render();
this._webglEngine.runRenderLoop(this.renderloop);
一切正常。
第一次调用有什么问题?第二种会不会更高效,因为我跳过了一个函数调用?
(可在此处找到 BabylonJS 文档:https://doc.babylonjs.com/)
this._webglEngine.runRenderLoop(newScene.render)
scene.render 中的 this
将是未定义的。修复它的最简单方法是将其包装在第二个示例中的函数中。
这是因为 javascript 处理 this
的方式。关于使用 this
in the Typescript wiki.
有一个很好的指南
我有一个关于 TypeScript 和函数作为参数的问题。我遇到了 BabylonJS 的问题,但我认为,它是关于所有 TypeScript 的。我将渲染函数存储在 class:
中this._renderloop = newScene.render; // render(): void; is a function of BabylonJS.Scene class
并通过
调用 BabylonJS renderLoopthis._webglEngine.runRenderLoop(this._renderloop);
这给我一些关于场景未初始化的属性(例如 _activeParticles)的错误。
但是当我通过以下方式设置渲染循环时:
this._renderloop = () => newScene.render();
this._webglEngine.runRenderLoop(this.renderloop);
一切正常。
第一次调用有什么问题?第二种会不会更高效,因为我跳过了一个函数调用?
(可在此处找到 BabylonJS 文档:https://doc.babylonjs.com/)
this._webglEngine.runRenderLoop(newScene.render)
scene.render 中的 this
将是未定义的。修复它的最简单方法是将其包装在第二个示例中的函数中。
这是因为 javascript 处理 this
的方式。关于使用 this
in the Typescript wiki.