代码之家  ›  专栏  ›  技术社区  ›  Tomasz Mularczyk

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

  •  0
  • Tomasz Mularczyk  · 技术社区  · 6 年前

    我在使用typescript和Rollupjs。

    babylon.d.ts

    Babylonjs将打字机与软件包捆绑在一起,因此当我像这样导入时:

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

    我从typescript中获得了所有的打字信息和打字检查,然而,由于(我认为)如何 巴比伦.js

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

    2:导入“装载机”;

    3:从“React”导入React;

    错误:节点\u modules/babylonjs/babylon.js未导出“引擎”

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

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

    但是我失去了所有的打字信息。。。

    所以我最快的解决办法就是用某种方式指示打字 巴比伦 也适用于 巴比伦js/es6.js

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Matt McCutchen    6 年前

    babylonjs 模块在中声明 babylon.d.ts :

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

    将相同的声明与 babylonjs/es6 模块名称,只需遵循相同的格式,并将模块声明添加到项目中的新文件中:

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

    (在另一个模块文件中添加此代码将不起作用,因为这样它将被视为模块扩充而不是模块声明。)

    考虑提交一个问题,以便在原始版本中进行此更改 巴比伦 包裹。