将一个模块中的类型用于另一模块

时间:2018-10-04 08:05:39

标签: node.js typescript definitelytyped babylonjs

我正在将Babylonjs与Rollupjs以及打字稿一起使用。

babylon.d.ts

Babylonjs具有与软件包捆绑在一起的类型,因此当我这样导入时:

switch

我从打字稿中获得了所有的键入信息和类型检查,但是,由于(我认为) babylon.js 是如何捆绑的-汇总无法捆绑它引发错误:

  

1:从“ babylonjs”导入{ArcRotateCamera,Engine,SceneLoader,Vector3};

     

2:导入“ babylonjs-loaders”;

     

3:从“反应”中导入React;

     

错误:node_modules / babylonjs / babylon.js未导出“引擎”

要修复汇总捆绑包,我需要将导入更改为:

import { ArcRotateCamera, Engine, SceneLoader, Vector3 } from "babylonjs";

但随后我丢失了所有键入信息...

所以我最快的解决方案是以某种方式指示打字稿 babylon.d.ts 也适用于 babylonjs / es6.js

P.S 这些命名的导入都是正确的,并且可以正常工作,因为当我将其与@storybook(通过webpack加载)一起使用时,组件可以正常工作。

1 个答案:

答案 0 :(得分:1)

您会注意到babylonjs中的babylon.d.ts模块是如何声明的:

declare module 'babylonjs' { 
    export = BABYLON; 
}
declare module BABYLON {
    // Many declarations...
}

要将相同的声明与babylonjs/es6模块名称相关联,您要做的就是遵循相同的格式,并将模块声明添加到项目中的新文件中:

declare module 'babylonjs/es6' { 
    export = BABYLON; 
}

(将这段代码添加到另一个模块文件中将不起作用,因为这会将其视为模块扩充而不是模块声明。)

请考虑提出一个问题,以在原始babylonjs软件包中进行此更改。