通过 TypeScript + requirejs 使用库扩展
Using library extensions with TypeScript + requirejs
我目前正在摆弄 THREE.js 和 socket.io 来制作一个小游戏 - 我想使用 THREE.js 的 OrbitControls 扩展(我用过它之前在非 TS 项目中)用于相机控制。
问题是客户端似乎找不到它(编译正常):
Uncaught TypeError: undefined is not a function
行:
this.cameraControls = new THREE.OrbitControls(this.camera, this.renderer.domElement);
我在我的 TS 文件中使用:
///<reference path="../typings/threejs/three-orbitcontrols.d.ts"/>
import OrbitControls = require("three-orbitcontrols");
在我的三个 orbitcontrols.d.ts 文件的底部,我有一些我似乎需要的常用导出文件:
declare module 'three-orbitcontrols' {
export=THREE.OrbitControls;
}
但我不确定这是否是正确的格式,我尝试了一些方法,例如将 requirejs 定向到配置中的正确文件(因为文件名有点不同):
paths: {
"three-orbitcontrols": "three.orbitcontrols"
}
有趣的是,在使用 Gulp(使用 AMD)编译后,three-orbitcontrols 不会出现在生成的 .js 文件顶部的 require 中。
我的问题是:您如何正确地包含一个 'extension' 库用于您已经拥有的 TS 和 requirejs 库?我需要做某种形式的合并吗?我需要手动合并 d.ts 和 js 文件吗? (我希望不会!)
谢谢!
how do you properly include an 'extension' library for a library you already have with TS and requirejs?
因为你在这里打电话 THREE.
: new THREE.OrbitControls
。您需要将 import OrbitControls = require("three-orbitcontrols");
放在 THREE
上,因此:
import OrbitControls = require("three-orbitcontrols");
THREE.OrbitControls = OrbitControls;
注意:没有 惯用的 方法来执行此操作,因为没有 JavaScript 库执行此操作的惯用方法。这里的解决方案特定于您的用例和此扩展。
我目前正在摆弄 THREE.js 和 socket.io 来制作一个小游戏 - 我想使用 THREE.js 的 OrbitControls 扩展(我用过它之前在非 TS 项目中)用于相机控制。
问题是客户端似乎找不到它(编译正常):
Uncaught TypeError: undefined is not a function
行:
this.cameraControls = new THREE.OrbitControls(this.camera, this.renderer.domElement);
我在我的 TS 文件中使用:
///<reference path="../typings/threejs/three-orbitcontrols.d.ts"/>
import OrbitControls = require("three-orbitcontrols");
在我的三个 orbitcontrols.d.ts 文件的底部,我有一些我似乎需要的常用导出文件:
declare module 'three-orbitcontrols' {
export=THREE.OrbitControls;
}
但我不确定这是否是正确的格式,我尝试了一些方法,例如将 requirejs 定向到配置中的正确文件(因为文件名有点不同):
paths: {
"three-orbitcontrols": "three.orbitcontrols"
}
有趣的是,在使用 Gulp(使用 AMD)编译后,three-orbitcontrols 不会出现在生成的 .js 文件顶部的 require 中。
我的问题是:您如何正确地包含一个 'extension' 库用于您已经拥有的 TS 和 requirejs 库?我需要做某种形式的合并吗?我需要手动合并 d.ts 和 js 文件吗? (我希望不会!)
谢谢!
how do you properly include an 'extension' library for a library you already have with TS and requirejs?
因为你在这里打电话 THREE.
: new THREE.OrbitControls
。您需要将 import OrbitControls = require("three-orbitcontrols");
放在 THREE
上,因此:
import OrbitControls = require("three-orbitcontrols");
THREE.OrbitControls = OrbitControls;
注意:没有 惯用的 方法来执行此操作,因为没有 JavaScript 库执行此操作的惯用方法。这里的解决方案特定于您的用例和此扩展。