Funções - TypeScript
Definindo Funções
Em JavaScript, funções são definidas com a palavra-chave function
function add(a, b) {
return a + b;
}
// utilizando a função
let result1 = add(1, 2); // resultado: 3
let result2 = add("1", "2"); // resultado: 12
Em TypeScript, as funções também são definidas com a palavra-chave function
Parâmetros da Função
Uma função pode ter parâmetros, que são declarados após o nome da função, dentro dos parênteses, separados por vírgulas. Após o nome do parâmetro, o tipo pode ser especificado com dois pontos:
// definição da função
function add(a: number, b: number) {
let result = a + b;
console.log(result);
}
// chamada da função
add(20, 30); // 50
add(10, 15); // 25
Como os parâmetros têm o tipo number
string
add("1", "2");
O compilador TypeScript lançará um erro, pois os parâmetros devem ser do tipo number
string
Além de usar os parâmetros passados, uma função também pode acessar variáveis globais definidas fora dela:
let ratio: number = 1.5;
function add(a: number) {
let result = a * ratio;
console.log(result);
}
add(20); // 30
add(10); // 15
Retorno da Função
Uma função pode retornar um valor de um tipo específico, chamado de "tipo de retorno" da função. O tipo de retorno é especificado após os parâmetros, usando dois pontos:
function add(a: number, b: number): number {
return a + b;
}
let result = add(1, 2);
console.log(result);
Neste exemplo, a função retorna um valor do tipo number
Se a função não retornar nada, o tipo void
function add(a: number, b: number): void {
console.log(a + b);
}
add(10, 20);
Parâmetros Opcionais
Em TypeScript, o número de argumentos passados para uma função deve corresponder exatamente ao número de parâmetros definidos:
function getName(firstName: string, lastName: string) {
return firstName + " " + lastName;
}
let name1 = getName("John", "Wick");
let name2 = getName("John", "Wick", "BabaYaga"); // erro: muitos parâmetros
let name3 = getName("John"); // erro: poucos parâmetros
Para permitir que uma função receba um número variável de argumentos, alguns parâmetros podem ser marcados como opcionais, usando o símbolo ?
function getName(firstName: string, lastName?: string) {
if (lastName)
return firstName + " " + lastName;
else
return firstName;
}
let name1 = getName("John", "Wick");
console.log(name1); // John Wick
let name2 = getName("John");
console.log(name2); // John
No segundo exemplo, como foi passado apenas o primeiro nome, o segundo parâmetro será undefined
Valores Padrão dos Parâmetros
Os parâmetros também podem ter valores padrão. Se um valor não for passado ao chamar a função, o valor padrão será usado:
function getName(firstName: string, lastName: string = "Doe") {
return firstName + " " + lastName;
}
let name1 = getName("John", "Wick");
console.log(name1); // John Wick
let name2 = getName("John");
console.log(name2); // John Doe
O valor padrão de um parâmetro pode ser o resultado de uma expressão:
function defaultLastName(): string {
return "Smith";
}
function getName(firstName: string, lastName: string = defaultLastName()) {
return firstName + " " + lastName;
}
let name1 = getName("Tom");
console.log(name1); // Tom Smith