- Используйте синтаксис параметра
?: 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
не был передан, он не будет использован при выводе сообщений.