Reputation: 697
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
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