3

I wonder how can I use .d.ts file to local javascript files.

I know I can declare module to give a type to third-party libs.

// index.d.ts (wrote on place typeRoots)

declare module "random-joke" {
  const getRandomJoke: () => Promise<any>;
  export { getRandomJoke };
}

like this. so I can use this "random-joke" library with type.

but how about this? I am try to import { sum } function in index.ts


// module/utils.js

export function sum(a, b) {
  return a + b;
}

export function power(a, b) {
  return a ** b;
}

export function multiply(a, b) {
  return a * b;
}


import { sum } from "./modules/utils"; 

//'sum' is declared but its value is never read.ts(6133) 
//Could not find a declaration file for module './modules/utils'. 

I tried declare module like this. but it doesn't works (It would have been pretty funny if this worked)

enter image description here

Anyway, I tried everything what I know. But the only thing that worked out was set allowJS:true in tsconfig.json

I know it isn't a right answer. then how can I make typescript get types in d.ts file in fair with javascript functions?

Even a little hint would be of great help. thanks

2
  • Hey, sorry this is unrelated to your questions, but I really want to know which font and color theme you are using. Would appreciate it if you share, thanks! Commented Jun 28, 2022 at 3:42
  • 1
    @SonNguyen sure. theme : "Doki-theme" -> Eva:Rei, font : D2Coding Commented Jun 28, 2022 at 3:54

1 Answer 1

4

ok, now I got how these things work.

just create your d.ts file with prefix of your js file.

in this case, you should make "utils.d.ts"


// module/utils.d.ts

export declare function sum(a: number, b: number): number;
export declare function power(a: number, b: number): number;
export declare function multiply(a: number, b: number): number;

then ts will get types by comparing file name.

enter image description here

as you can see, now you can use your js functions within types.

just be sure add your .d.ts file path in tsconfig.json.


{
   //...

    "typeRoots": [
      "./types",
      "./modules" // my d.ts files are in "types" and "modules"
    ] /* Specify multiple folders that act like './node_modules/@types'. */

  //...

hope this answer were help.

Sign up to request clarification or add additional context in comments.

1 Comment

How to do it with objects?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.