Typescript - ( Declaration | Definition ) file ( .d.ts file)


library definition file are known in typesecript/javascript as declaration files or .d.ts files. They describe the library in terms of class, function, type.

They are ambient.

By default, all visible @types packages are included in your compilation.

Packages in node_modules/@types of any enclosing folder are considered visible; that means packages within

  • ./node_modules/@types/,
  • ../node_modules/@types/,
  • ../../node_modules/@types/,
  • and so on are visible.

How does typescript or your IDE find declaration files locally

See How does typescript or your IDE find type declaration files (d.ts)?

Typings Package

Typings package are package with the typing type and ship only declaration files.

Search: the package names follow this pattern: @types/library-name


Example with lodash

yarn add @types/lodash --dev
// or
npm install -S @types/lodash

Repository containing these files for each library.


by example

Global Variable

/** The number of widgets present */
declare var foo: number;
declare const foo: number; // Read only
declare let foo: number; // Block scoped


  • declare function declare functions
declare function greet(greeting: string): void;

Objects with Properties (Namespace)

  • declare namespace to declare to describe types or values accessed by dotted notation
declare namespace myLib {
    function makeGreeting(s: string): string;
    let numberOfGreetings: number;

Overloaded function

Function - Overloaded Function (Overloaded)

declare function getWidget(n: number): Widget;
declare function getWidget(s: string): Widget[];


Creation with tsc command line

with Typescript - tsc (official compiler)

tsc --declaration ./js/index.ts
# or 
tsc --declaration -p tsconfig.json


  • -d or –declaration generates a '.d.ts' file.

Creation with tsconfig and jsx

  // Your project
  "include": ["src/**/*"],
  "compilerOptions": {
    // Tells TypeScript to read JS files, as
    // normally they are ignored as source files
    "allowJs": true,
    // Generate d.ts files
    "declaration": true,
    // This compiler run should only output d.ts files
    // to not overwrite the js file
    "emitDeclarationOnly": true,
    // Types should go into this directory.
    // Removing this would place the .d.ts files
    // next to the .js files
    "outDir": "dist",
    // go to js file when using IDE functions like
    // "Go to Definition" in VSCode
    "declarationMap": true,
    // exclude errors in types from dependencies libraries
    "skipLibCheck": true,
    // Allows jsx
    "allowImportingTsExtensions": true,
    "jsx": "react-jsx",
    // ??? React can only be used with a default import when using the 'esModuleInterop' flag
    "esModuleInterop": true
  • then with tsc
tsc --project tsconfig.types.json


Discover More
Card Puncher Data Processing
Code Shipping - Definition File (Declaration File, Stubs)

dynamic languages does not have any type system (by default). (a variable may store any kind of value. To overcome this situation, developers create definition files that defines a library in terms of...
D3 Documentation Vscode
D3 - Dev Installation

This article describe a dev environment installation with: Webpack for Hot reloading D3 Documentation in the IDE The work and scripts are also available on GitHub. gerardnico/create-d3-app HTML...
How does typescript or your IDE find type declaration files (d.ts)?

This article explains to you how typescript or your ide will search for type declaration files. At the end of this article, you should be able to resolve this kind of error: When you are creating...
Idea Javascript Plugin
IDEA - Javascript Dev

A javascript Project is a Static Web project. You need to define the JavaScript libraries as dependency. The debug session is based on the chrome debug mode. If you choose: locally, Idea will...
Intellij Javascript Version Es6
IDEA - Javascript Test with Jest

Javascript Test with Jest in IDEA Source File: auth.js Test File: auth.test.js. Go to test file from source file: Ctrl+Shift+T or Navigate > Test The test file: name should have a .test.,...
Javascript - (Static) Typing (Checker)

in JavaScript. Typing can be added with this method: TypeScript (by Microsoft). in Typescript, Type declaration files express the data types of parameters and functions. - - superset of Javascript...
Javascript - Jest-puppeteer with typescript configuration

How to install and configure puppeteer with Jest and Typescript. custom-example-without-jest-puppeteer-preset You...
Javascript - Set

The Set interface represents a set data type and works only with primitive type as there is no way to define an object equality function. object Jsdoc Declaration Add/Delete Size Contains...
Javascript - Typescript

TypeScript is a typed superset of JavaScript that compile to plain JavaScript. It adds static typing. JSdocReference See When...
Javascript Package - Package.json

Package.json is used by npm to store metadata for projects published as package. The package.json files: * serves as documentation for what packages your project depends on. * allows you to specify...

Share this page:
Follow us:
Task Runner