These examples are ordered in approximately increasing order of complexity.

Objects with Properties

Documentation

Code

Declaration

Use declare namespace to describe types or values accessed by dotted notation.

  1. ts
    declare namespace myLib {
    function makeGreeting(s: string): string;
    let numberOfGreetings: number;
    }

Overloaded Functions

Documentation

The getWidget function accepts a number and returns a Widget, or accepts a string and returns a Widget array.

Code

  1. ts
    let x: Widget = getWidget(43);
    let arr: Widget[] = getWidget("all of them");

Declaration

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

Documentation

When specifying a greeting, you must pass a GreetingSettings object. This object has the following properties:

1 - greeting: Mandatory string

2 - duration: Optional length of time (in milliseconds)

Code

  1. ts
    greet({
    greeting: "hello world",
    duration: 4000
    });

Declaration

Use an interface to define a type with properties.

Reusable Types (Type Aliases)

Documentation

Code

  1. ts
    function getGreeting() {
    return "howdy";
    }
    class MyGreeter extends Greeter {}
    greet("hello");
    greet(getGreeting);
    greet(new MyGreeter());

Declaration

You can use a type alias to make a shorthand for a type:

    Organizing Types

    Documentation

    The greeter object can log to a file or display an alert. You can provide LogOptions to .log(...) and alert options to .alert(...)

    Code

    1. ts
      const g = new Greeter("Hello");
      g.log({ verbose: true });
      g.alert({ modal: false, title: "Current Greeting" });

    Declaration

    Use namespaces to organize types.

    1. ts
      declare namespace GreetingLib {
      interface LogOptions {
      verbose?: boolean;
      }
      interface AlertOptions {
      modal: boolean;
      title?: string;
      color?: string;
      }
      }

    You can also create nested namespaces in one declaration:

    Code

    1. ts

    Declaration

    Use declare class to describe a class or class-like object. Classes can have properties and methods as well as a constructor.

    1. ts
      declare class Greeter {
      constructor(greeting: string);
      greeting: string;
      showGreeting(): void;
      }

    Global Variables

    Documentation

    The global variable foo contains the number of widgets present.

    Code

    1. ts
      console.log("Half the number of widgets is " + foo / 2);

    Declaration

    Use declare var to declare variables. If the variable is read-only, you can use declare const. You can also use declare let if the variable is block-scoped.

    1. ts
      /** The number of widgets present */
      declare var foo: number;

    Global Functions

    Documentation

    Code

    Declaration

    Use declare function to declare functions.