Bird
Raised Fist0
Typescriptprogramming~5 mins

Declaration file syntax (.d.ts) in Typescript

Choose your learning style10 modes available
Introduction

Declaration files tell TypeScript about the shape of code written in JavaScript or other files. They help TypeScript understand what types and functions exist without running the code.

You want to use a JavaScript library in a TypeScript project and need type information.
You write a library in JavaScript but want to provide type info for users.
You want to separate type definitions from implementation for clarity.
You want to describe global variables or modules that TypeScript doesn't know about.
You want to avoid rewriting existing JavaScript code but still get type checking.
Syntax
Typescript
declare module 'module-name' {
  export function functionName(param: type): returnType;
  export interface InterfaceName {
    property: type;
  }
  // other declarations
}

declare const variableName: type;

declare function functionName(param: type): returnType;

interface InterfaceName {
  property: type;
}

// No implementation code, only declarations
Declaration files use the declare keyword to tell TypeScript about existing code without implementing it.
They only describe types, interfaces, variables, and functions, but never contain actual code logic.
Examples
This declares a module named 'math-lib' with two functions, add and subtract, both taking two numbers and returning a number.
Typescript
declare module 'math-lib' {
  export function add(a: number, b: number): number;
  export function subtract(a: number, b: number): number;
}
This declares a constant named VERSION of type string available globally.
Typescript
declare const VERSION: string;
This declares an interface User describing an object with three properties.
Typescript
interface User {
  id: number;
  name: string;
  isActive: boolean;
}
This declares a function greet that takes a string and returns nothing (void).
Typescript
declare function greet(name: string): void;
Sample Program

This example shows a declaration file math-lib.d.ts describing a module with a function and a constant. The usage file imports them and uses them to calculate and print the area of a circle.

Typescript
/* math-lib.d.ts */
declare module 'math-lib' {
  export function multiply(x: number, y: number): number;
  export const PI: number;
}

/* usage.ts */
import { multiply, PI } from 'math-lib';

const area = multiply(PI, 5 * 5);
console.log(`Area of circle: ${area}`);
OutputSuccess
Important Notes

Declaration files do not contain real code, so running the sample program without the actual module will print NaN because multiply and PI are not implemented.

Declaration files help TypeScript check your code but do not create JavaScript output themselves.

Summary

Declaration files (.d.ts) describe the shape of existing code for TypeScript.

They use declare to define types, functions, variables, and modules without implementation.

They help TypeScript understand JavaScript libraries and improve code safety.

Practice

(1/5)
1. What is the main purpose of a TypeScript declaration file (.d.ts)?
easy
A. To describe the types and structure of existing JavaScript code without implementation
B. To write executable TypeScript code
C. To compile TypeScript into JavaScript
D. To store runtime configuration settings

Solution

  1. Step 1: Understand the role of declaration files

    Declaration files provide type information about existing JavaScript code but do not contain actual code implementations.
  2. Step 2: Differentiate from other file types

    Unlike .ts files that contain executable code, .d.ts files only describe types and interfaces.
  3. Final Answer:

    To describe the types and structure of existing JavaScript code without implementation -> Option A
  4. Quick Check:

    Declaration files describe types only [OK]
Hint: Declaration files describe types, not code execution [OK]
Common Mistakes:
  • Thinking declaration files contain executable code
  • Confusing declaration files with config files
  • Assuming declaration files compile to JavaScript
2. Which of the following is the correct syntax to declare a function named greet that takes a string and returns void in a .d.ts file?
easy
A. function greet(name: string): void;
B. function greet(name: string): void {}
C. declare greet(name: string): void;
D. declare function greet(name: string): void;

Solution

  1. Step 1: Recognize declaration syntax in .d.ts files

    Functions must be declared with the declare keyword and no implementation body.
  2. Step 2: Check each option

    function greet(name: string): void; misses declare, declare greet(name: string): void; has incorrect syntax, function greet(name: string): void {} includes a function body which is not allowed in declaration files.
  3. Final Answer:

    declare function greet(name: string): void; -> Option D
  4. Quick Check:

    Use declare function without body [OK]
Hint: Use 'declare function' with no body in .d.ts files [OK]
Common Mistakes:
  • Omitting the 'declare' keyword
  • Adding function bodies in declaration files
  • Using incorrect declaration syntax
3. Given the following declaration in a .d.ts file:
declare module "math-lib" {
  export function add(a: number, b: number): number;
}

What will be the TypeScript type of result after this code?
import { add } from "math-lib";
const result = add(5, 3);
medium
A. string
B. void
C. number
D. any

Solution

  1. Step 1: Analyze the declaration file

    The module "math-lib" declares an exported function add that takes two numbers and returns a number.
  2. Step 2: Understand the import and usage

    The code imports add and calls it with two numbers, so the result type matches the declared return type: number.
  3. Final Answer:

    number -> Option C
  4. Quick Check:

    Declared return type = number [OK]
Hint: Return type in declaration matches usage type [OK]
Common Mistakes:
  • Assuming return type is any by default
  • Confusing return type with parameter types
  • Ignoring module declaration types
4. Identify the error in this .d.ts declaration:
declare var count: number = 10;
medium
A. Variables cannot be declared with initial values in .d.ts files
B. The keyword 'var' is not allowed in declaration files
C. The type 'number' is invalid in declaration files
D. The 'declare' keyword is missing

Solution

  1. Step 1: Understand variable declaration in .d.ts files

    Declaration files only declare types and variables without assigning values.
  2. Step 2: Check the given code

    The code assigns = 10 which is not allowed in declaration files.
  3. Final Answer:

    Variables cannot be declared with initial values in .d.ts files -> Option A
  4. Quick Check:

    No initial values allowed in declarations [OK]
Hint: No initial values in declarations, only types [OK]
Common Mistakes:
  • Adding initial values to declared variables
  • Removing 'declare' keyword mistakenly
  • Using invalid keywords in declaration files
5. You want to write a declaration file for a JavaScript library that exports an object with keys as strings and values as functions returning numbers. Which is the correct declaration syntax in a .d.ts file?
hard
A. declare const lib: Map number>; export default lib;
B. declare const lib: { [key: string]: () => number }; export default lib;
C. declare const lib: { key: string; value: () => number }; export default lib;
D. const lib: { string: () => number }; export default lib;

Solution

  1. Step 1: Understand the object shape needed

    The library exports an object where keys are strings and values are functions returning numbers.
  2. Step 2: Match syntax for index signatures in declaration files

    declare const lib: { [key: string]: () => number }; export default lib; uses the correct index signature syntax { [key: string]: () => number } with declare and exports default.
  3. Step 3: Eliminate incorrect options

    const lib: { string: () => number }; export default lib; lacks declare and uses invalid syntax, declare const lib: { key: string; value: () => number }; export default lib; incorrectly declares keys and values as properties, declare const lib: Map number>; export default lib; uses Map which is not specified.
  4. Final Answer:

    declare const lib: { [key: string]: () => number }; export default lib; -> Option B
  5. Quick Check:

    Use index signature with declare and export default [OK]
Hint: Use index signature {[key: string]: type} for dynamic keys [OK]
Common Mistakes:
  • Using invalid object property syntax
  • Omitting 'declare' keyword
  • Confusing Map with plain object types
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard