How to add custom "typings" in typescript 2.0 / 3.0

Typescripttypescript2.0

Typescript Problem Overview


According to this article typings system for typescript 2.0 has changed and so it is not clear how to attach custom typings now. Should I always create NPM package for that?

Thank you in advance!

Typescript Solutions


Solution 1 - Typescript

You can create local custom typings just for your project, where you can declare types for JS libraries. For that, you need to:

  1. Create directory structure to keep your type declaration files so that your directory structure looks similar to this:

     .
     ├── custom_typings
     │   └── some-js-lib
     │       └── index.d.ts
     └── tsconfig.json
    
  2. In the index.d.ts file, add a declaration for your JS library:

     declare module 'some-js-lib' {
       export function hello(world: string): void
     }
    
  3. (Optional: skip if you have TypeScript >= 4.x) Add a reference to this type declaration in the compilerOptions section of your tsconfig.json:

     {
       "compilerOptions": {
         ...
         "typeRoots": ["./node_modules/@types", "./custom_typings"]
       },
       ...
     }
    
  4. Use the declared module in your code:

     import { hello } from 'some-js-lib'
    
     hello('world!')
    

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLu4View Question on Stackoverflow
Solution 1 - TypescriptMisterMetaphorView Answer on Stackoverflow