Parameters
Optional Parameter
Optional parameter sometimes is very useful. For example, like when you want pass 2 or 3 parameters to add
function:
function add(a: number, b: number) {
return a + b;
}
add(1, 2); // OK
add(1, 2, 3); // Error: Expected 2 arguments, but got 3.
Above will cause a error, in this scenario we can use optional parameter:
function add(a: number, b: number, c?: number) {
return c ? a + b + c : a + b;
}
add(1, 2); // OK
add(1, 2, 3); // OK
We must declare the optional parameters after the required parameters.
function add(a: number, b?: number, c: number) {
// Error: A required parameter cannot follow an optional parameter.
return b ? a + b : a;
}
Default Parameter
function add(a: number, b = 1, c: number, d = 2) {
return a + b + c + d;
}
add(1, undefined, 1);
In the above example, we must pass undefined
as the second parameter because c
is required. Parameter d
is unnecessary because there is no required parameter behind this.
When calls a function, default parameter can not be omitted if there is required parameter behind it.
Rest Parameter
Similar to ES6, we can also use rest in typescript but need to define the type of rest, we can use array type. See the following example:
function add(a: number, ...rest: number[]) {
return a + rest.reduce((acc, cur) => acc + cur);
}
add(1, 2, 3, 4, 5, 6);
Remember rest parameters must come last in the function definition, otherwise the TypeScript compiler will show an error.
The following will cause an error:
function add(...rest: number[], a: number) {
// Error: A rest parameter must be last in a parameter list.
return a + rest.reduce((acc, cur) => acc + cur);
}