- Используйте синтаксис параметра
?: type, чтобы сделать параметр необязательным. - Используйте выражение
typeof (параметр)! == 'undefined', чтобы проверить, был ли параметр инициализирован.
function multiply(a: number, b?: number, c: number): number {
if (typeof c !== "undefined") {
return a * b * c;
}
return a * b;
}TypeScript поддерживает необязательные и дефолтные параметры в функции с помощью специального синтаксиса.
Необязательные параметры
Необязательные параметры определяются с помощью символа ? после имени параметра. Необязательный параметр может быть опущен при вызове функции, и в этом случае ему будет присвоено значение undefined.
function printName(firstName: string, lastName?: string) {
console.log(firstName + (lastName ? ' ' + lastName : ''));
}
printName('John'); // Output: 'John'
printName('John', 'Doe'); // Output: 'John Doe'В этом примере мы определили функцию printName(), которая принимает два параметра: firstName и lastName. Параметр lastName определен как необязательный с помощью символа ? после имени параметра. При вызове функции printName() с одним параметром ('John') в консоль будет выведено только имя. При вызове функции с двумя параметрами ('John'и 'Doe') в консоль будет выведено имя и фамилия.
Дефолтные параметры
Дефолтные параметры позволяют определить значение параметра по умолчанию, которое будет использовано, если параметр не был передан при вызове функции. Дефолтные параметры определяются с помощью символа = после имени параметра.
function printGreeting(name: string = 'World') {
console.log(`Hello, ${name}!`);
}
printGreeting(); // Output: 'Hello, World!'
printGreeting('John'); // Output: 'Hello, John!'В этом примере мы определили функцию printGreeting(), которая принимает один параметр name. Параметр name определен со значением по умолчанию 'World' с помощью символа = после имени параметра. Если параметр name не был передан при вызове функции, будет использовано значение по умолчанию 'World'. Если параметр был передан, будет использовано переданное значение.
Комбинация необязательных и дефолтных параметров
Необязательные и дефолтные параметры могут быть использованы вместе в одной функции.
function printMessage(message: string = 'Hello', times: number = 1, name?: string) {
for (let i = 0; i < times; i++) {
console.log(`${message}${name ? ', ' + name : ''}`);
}
}
printMessage(); // Output: 'Hello'
printMessage('Hi', 2); // Output: 'Hi' 'Hi'
printMessage('Welcome', 3, 'John'); // Output: 'Welcome, John' 'Welcome, John' 'Welcome, John'В этом примере мы определили функцию printMessage(), которая принимает три параметра: message, times и name. Параметры message и times определены с помощью значений по умолчанию — 'Hello' и 1 соответственно. Параметр name определен как необязательный с помощью символа ? после имени параметра. Если параметр name не был передан, он не будет использован при выводе сообщений.