如何为无类型的npm模块制作一组自定义d.ts文件?

时间:2017-12-03 16:42:50

标签: typescript typescript-typings

我需要根据自己的需要自定义现有的@types/three。 我克隆了@types/threesrc/typings中的整个npm rm @types/threetsconfig.json同时查看node_modules/@typessrc/typings

但是,声明模块不会解析为“3”。

以下是typings/three/index.d.ts

export * from "./three-core";

export * from "./three-canvasrenderer";
export * from "./three-colladaLoader";
export * from "./three-copyshader";
export * from "./three-css3drenderer";
export * from "./three-ctmloader";
export * from "./three-ddsloader";
export * from "./three-editorcontrols";
export * from "./three-effectcomposer";
export * from "./three-examples";
export * from "./three-fbxloader";
export * from "./three-FirstPersonControls";
export * from "./three-maskpass";
export * from "./three-mtlloader";
export * from "./three-objloader";
export * from "./three-octree";
export * from "./three-orbitcontrols";
export * from "./three-orthographictrackballcontrols";
export * from "./three-outlinepass";
export * from "./three-projector";
export * from "./three-renderpass";
export * from "./three-shaderpass";
export * from "./three-smaapass";
export * from "./three-trackballcontrols";
export * from "./three-transformcontrols";
export * from "./three-vrcontrols";
export * from "./three-vreffect";

// export * from "./three-gltfloader";

export declare module 'three';
// [ts] 'export' modifier cannot be applied to ambient modules and module augmentations since they are always visible.    
// AND
// [ts] Invalid module name in augmentation. Module 'three' resolves to an untyped module at '/Users/abc_user/Desktop/abc_project/node_modules/three/build/three.js', which cannot be augmented.

// export as namespace THREE;
// This has no errors but does not resolve to 'three, meaning when I import * as THREE from 'three', ts says no declaration file exists.

所以问题是:如何为无类型的npm模块制作一组自定义的d.ts文件?

1 个答案:

答案 0 :(得分:2)

嗯,你已经弄清楚了大部分内容。您最有可能还没有完成更新您的tsconfig。您需要明确设置typescript编译器可以找到自己的类型的位置。

将此添加到tsconfig.json:

    "paths": {
        "*": [
            "node_modules/*",
            "src/typings/*"
        ]
    },