Introduction
These examples are ordered in approximately increasing order of complexity.
The Examples
Documentation
Code
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.
/** The number of widgets present */
declare var foo: number;
Global Functions
Documentation
You can call the function
greet
with a string to show a greeting to the user.
Code
greet("hello, world");
Declaration
Use declare function
to declare functions.
declare function greet(greeting: string): void;
Documentation
Code
let result = myLib.makeGreeting("hello, world");
console.log("The computed greeting is:" + result);
Use declare namespace
to describe types or values accessed by dotted notation.
Overloaded Functions
Documentation
The getWidget
function accepts a number and returns a Widget, or accepts a string and returns a Widget array.
Code
let x: Widget = getWidget(43);
let arr: Widget[] = getWidget("all of them");
Declaration
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)
3 - color: Optional string, e.g. ‘#ff00ff’
Code
greet({
duration: 4000
});
Declaration
Use an interface
to define a type with properties.
interface GreetingSettings {
greeting: string;
duration?: number;
color?: string;
}
declare function greet(setting: GreetingSettings): void;
Reusable Types (Type Aliases)
Documentation
Code
Declaration
You can use a type alias to make a shorthand for a type:
type GreetingLike = string | (() => string) | Greeter;
declare function greet(g: GreetingLike): void;
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
const g = new Greeter("Hello");
g.log({ verbose: true });
g.alert({ modal: false, title: "Current Greeting" });
Declaration
Use namespaces to organize types.
declare namespace GreetingLib {
interface LogOptions {
interface AlertOptions {
modal: boolean;
title?: string;
color?: string;
}
}
You can also create nested namespaces in one declaration:
declare namespace GreetingLib.Options {
// Refer to via GreetingLib.Options.Log
interface Log {
verbose?: boolean;
}
interface Alert {
modal: boolean;
title?: string;
color?: string;
}
}
Classes
Documentation
Code
Declaration
Use declare class
to describe a class or class-like object.Classes can have properties and methods as well as a constructor.
declare class Greeter {
constructor(greeting: string);
greeting: string;
showGreeting(): void;
}