Interfaces

Go back to Tutorial

An interface is a TypeScript artifact, it is not part of ECMAScript. An interface is a way to define a contract on a function with respect to the arguments and their type. Along with functions, an interface can also be used with a Class as well to define custom types.

An interface is an abstract type, it does not contain any code as a class does. It only defines the ‘signature’ or shape of an API. During transpilation, an interface will not generate any code, it is only used by Typescript for type checking during development.

Here is an example of an interface describing a function API:

interface Callback {

(error: Error, data: any): void;

}

function callServer(callback: Callback) {

callback(null, ‘hi’);

}

callServer((error, data) => console.log(data));  // ‘hi’

callServer(‘hi’);                                // tsc error

Sometimes JavaScript functions can accept multiple types as well as varying arguments, that is, they can have different call signatures. Interfaces can be used to specify this.

interface PrintOutput {

(message: string): void;    // common case

(message: string[]): void;  // less common case

}

let printOut: PrintOutput = (message) => {

if (Array.isArray(message)) {

console.log(message.join(‘, ‘));

} else {

console.log(message);

}

}

printOut(‘hello’);       // ‘hello’

printOut([‘hi’, ‘bye’]); // ‘hi, bye’

Here is an example of an interface describing an object literal:

interface Action {

type: string;

}

let a: Action = {

type: ‘literal’

}

Go back to Tutorial

TypeScript Configuration
TypeScript and JavaScript

Get industry recognized certification – Contact us

keyboard_arrow_up
Open chat
Need help?
Hello 👋
Can we help you?