Declaration Reference
The purpose of this guide is to teach you how to write a high-quality definition file.This guide is structured by showing documentation for some API, along with sample usage of that API,and explaining how to write the corresponding declaration.
These examples are ordered in approximately increasing order of complexity.
Objects with Properties
Documentation
The global variable
myLibhas a functionmakeGreetingfor creating greetings,and a propertynumberOfGreetingsindicating the number of greetings made so far.
Code
tsletresult =myLib.makeGreeting("hello, world");console.log("The computed greeting is:" +result);letcount =myLib.numberOfGreetings;
Declaration
Usedeclare namespace to describe types or values accessed by dotted notation.
tsdeclarenamespacemyLib {functionmakeGreeting(s:string):string;letnumberOfGreetings:number;}
Overloaded Functions
Documentation
ThegetWidget function accepts a number and returns a Widget, or accepts a string and returns a Widget array.
Code
tsletx:Widget =getWidget(43);letarr:Widget[] =getWidget("all of them");
Declaration
tsdeclarefunctiongetWidget(n:number):Widget;declarefunctiongetWidget(s:string):Widget[];
Reusable Types (Interfaces)
Documentation
When specifying a greeting, you must pass a
GreetingSettingsobject.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
tsgreet({greeting:"hello world",duration:4000});
Declaration
Use aninterface to define a type with properties.
tsinterfaceGreetingSettings {greeting:string;duration?:number;color?:string;}declarefunctiongreet(setting:GreetingSettings):void;
Reusable Types (Type Aliases)
Documentation
Anywhere a greeting is expected, you can provide a
string, a function returning astring, or aGreeterinstance.
Code
tsfunctiongetGreeting() {return"howdy";}classMyGreeterextendsGreeter {}greet("hello");greet(getGreeting);greet(newMyGreeter());
Declaration
You can use a type alias to make a shorthand for a type:
tstypeGreetingLike =string | (()=>string) |MyGreeter;declarefunctiongreet(g:GreetingLike):void;
Organizing Types
Documentation
The
greeterobject can log to a file or display an alert.You can provide LogOptions to.log(...)and alert options to.alert(...)
Code
tsconstg =newGreeter("Hello");g.log({verbose:true });g.alert({modal:false,title:"Current Greeting" });
Declaration
Use namespaces to organize types.
tsdeclarenamespaceGreetingLib {interfaceLogOptions {verbose?:boolean;}interfaceAlertOptions {modal:boolean;title?:string;color?:string;}}
You can also create nested namespaces in one declaration:
tsdeclarenamespaceGreetingLib.Options {// Refer to via GreetingLib.Options.LoginterfaceLog {verbose?:boolean;}interfaceAlert {modal:boolean;title?:string;color?:string;}}
Classes
Documentation
You can create a greeter by instantiating the
Greeterobject, or create a customized greeter by extending from it.
Code
tsconstmyGreeter =newGreeter("hello, world");myGreeter.greeting ="howdy";myGreeter.showGreeting();classSpecialGreeterextendsGreeter {constructor() {super("Very special greetings");}}
Declaration
Usedeclare class to describe a class or class-like object.Classes can have properties and methods as well as a constructor.
tsdeclareclassGreeter {constructor(greeting:string);greeting:string;showGreeting():void;}
Global Variables
Documentation
The global variable
foocontains the number of widgets present.
Code
tsconsole.log("Half the number of widgets is " +foo /2);
Declaration
Usedeclare var to declare variables.If the variable is read-only, you can usedeclare const.You can also usedeclare let if the variable is block-scoped.
ts/** The number of widgets present */declarevarfoo:number;
Global Functions
Documentation
You can call the function
greetwith a string to show a greeting to the user.
Code
tsgreet("hello, world");
Declaration
Usedeclare function to declare functions.
tsdeclarefunctiongreet(greeting:string):void;
The TypeScript docs are an open source project. Help us improve these pagesby sending a Pull Request ❤
Last updated: Nov 25, 2025