kalpa
kalpa

Reputation: 697

How can I make a custom set of d.ts files for an untyped npm module?

I need to customize an existing @types/three as per my needs. I cloned the entire @types/three in my src/typings and npm rm @types/three. tsconfig.json looks at both node_modules/@types and src/typings

However, the declaration module does not resolve to 'three'.

Here is the 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.

So the question is: How can I make a custom set of d.ts files for an untyped npm module?

Upvotes: 0

Views: 1117

Answers (1)

kentor
kentor

Reputation: 18514

Well you already figured out most of it. What you most likely haven't done yet is updating your tsconfig. You need to explicitly set where the typescript compiler can find your own typings.

Add this to your tsconfig.json:

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

Upvotes: 2

Related Questions