Functions
Return Type
Section titled “Return Type”//`: number` specifies this function returns a numberfunction getTime(): number { return new Date().getTime();}
Return type void; doesn’t return any value
Section titled “Return type void; doesn’t return any value”function printString(): void { console.log('Hello World!'); // prints "Hello World!" // but doens't return any value}
Parameters
Section titled “Parameters”Function parameters can be typed, but they can also be inferred
function add(a: number, b: number) { // typed parameters return a + b;}
Optional Parameters
Section titled “Optional Parameters”// the `?` marks parameter `z` as optionalfunction multiply(x: number, y: number, z?: number) { return x + y + (z || 0);}console.log(add(3, 6)); // 9 since we didn't pass a `z`console.log(add(3, 6, 9)); // 18 since we passed a `z`
Default Parameters
Section titled “Default Parameters”function pow(value: number, exponent: number = 4) { return value ** exponent;}
The type can also be inferred from the default value
Named Parameters
Section titled “Named Parameters”Same as typing regualr parameters, but with an object
function divide({ dividend, divisor }: { dividend: number; divisor: number }) { return dividend / divisor;}
Rest Parameters
Section titled “Rest Parameters”Same as typing regular parameters, but with an array
function subtract(x: number, y: number, ...rest: number[]) { console.log(x - y - rest.reduce((a, b) => a - b, 0));}
subtract(1, 2, 3, 4, 5);
Type Aliases
Section titled “Type Aliases”type Aliased = (value: number) => number;
// For this function, parameter `value` is automatically assigned// type `number` from type `Aliased`const aliasedFunction: Aliased = (value) => value \* -1;