Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

O assunto funções já foi discutidos em Tutorial Portugol: Funções em Portugol e Tutorial C: Funções

Funções são trechos de código que realizam uma tarefa. São criadas para evitar repetição de código, auxiliar na manutenção, reuso e outros.

Sintaxe
function nome_funcao() {
	//corpo função
}
Onde
function: Define a criação de uma funcão ou procedimento
nome_funcao: nome da função desejada
Exemplo 1
//arquivo.js
function funcao():number {
    //omitido
    return 1;  
}

function funcao():void {
    //omitido
    //sem retorno
}
Saída
Olá, World!

O exemplo acima deve ser executado em um dos compiladores online listados na introdução deste tutorial. A invocação da função írá depender da tecnologia a qual está utilizando a linguagem TS como linguagem principal ou de extensão.

Uma função em TS pode ser invocada, basicamente, por um evento e chamada da função. Outras ferramentas que utilizam TS como linguagem podem utilizar outras formas.

Após a compilação e integração com HTML, para invocarmos uma função por evento, precisamos declarar uma função desejada e atribuí-la a alguns dos eventos fornecidos por um elemento HTML.

Exemplo
//arquivo.js
function funcao(){
    console.log("Olá, World!");  
}

<!-- arquivo.html -->
<button onclick="funcao()">Ação </button>

Saída
-

Na integração com HTML acima, quando um usuário clicar no botão Ação, a função funcao declarada será invocada. O método onclick acima é apenas um exemplo sendo possível utilizar todos os métodos disponíveis.

A integração com HTML não será visto nesta parte do tutorial tendo uma seção ou tutorial específico que será estudado futuramente.

Após a declaração de uma função, essa pode ser invocada normalmente em nossos programas TS utilizamos seu próprio nome.

Exemplo
function funcao():void {
    console.log("Olá, Mundo!");  
}

funcao();
Saída
Olá, World!

Para criarmos funções que aceitam parâmetros de entrada, utilizamos a sintaxe abaixo. A chamada de uma função que utiliza parâmetros é feita normalmente passando os argumentos no momento da invocação.

Sintaxe
function nome_funcao( param1, param2, paramN ){
	//corpo função
}
Onde
param1..N: Lista de parâmetros separados por (,)
Exemplo 3
function funcao(param1):void {
    console.log(param1);  
}

funcao("uma string em TS");
Saída
uma string em TS

A linguagem TS permite que na declaração de parâmetros de uma função possamos utilizar um valor padrão que é atribuído no momento da declaração utilizando o operador (=):

Sintaxe
function nome_funcao(param1=valor_padrao ) {
	//corpo função
}
Exemplo 4
function funcao(param1,param2="qualquer"):void {
    console.log(param1,param2);  
}

funcao("uma string"); //argumento 2 não informado
Saída
uma string qualquer

Se nenhum parâmetro for informado ao invocarmos uma função, o compilador não irá gerar nenhum tipo de erro.

Para declararmos funções com um número variável de parâmetros utilizamos o operador (...). Nessa abordagem, a lista de parâmetros é armazenada em um array/vetor.

Sintaxe
function nome_funcao(...param: tipo_dado) {
	//corpo função
}
Onde
param: Array contndo lista variável de parâmetros.
tipo_dado: tipo de dado dos parâmetros

Para descobrirmos o número de argumento passadas para as nossas funções que utilizam () podemos utilizar a propriedade length de param.

Exemplo 5
function funcao(...param:string):void {
    for (let i = 0; i < param.length; i++) {
      console.log(param[i]);
    }  
}
funcao("uma","string","qualquer"); 
Saída
uma 
string
qualquer

Para que uma função em TS retorne um valor ou objeto, utilizamos a palavra reservada return. Uma função pode conter mais de um return declarado em seu corpo.

Sintaxe
function nome_funcao(): tipo_retorno
{
    //corpo omitido
    return valor_retorno;
}
Exemplo 6
function funcao(param:number):number {
    return param*2;
}
ret:number = funcao(2); 
console.log(ret);
Saída
4

A linguagem TS diferente de linguagens como C, C# e Java, não permite o retorno de múltiplos valores em uma função. Dessa forma, um vetor ou tuple deve ser utilizado para alcançar tal necessidade.

A linguagem TS nos permite atribuir uma função à uma variável. A atribuição pode ser feita após a declaração de um função ou no momento de sua declaração. Quando fazemos isso, estamos utilizando o tipo de dado function.

Exemplo 7
function funcao():void {
    console.log("um string qualquer");
}

let funcao1 = funcao;
funcao1();

let funcao2 = function funcao():void {
    console.log("um string qualquer");
};
funcao2();
Saída
um string qualquer
um string qualquer

Como podemos utilizar funções como variáveis, podemos também criar array de funções. Como esse array podemos, por exemplo, substituir parcialmente o comando de escolha switch.

Exemplo 8
function funcao1():void{
  console.log('funcao1');
}

function funcao2():void{
  console.log('funcao1');
}

function funcao3():void{
  console.log('funcao1');
}

//array de funções
array = [funcao1,funcao2,funcao2];

//valor de seleção arbitrário
opcao = 0;

//execução de um função de acordo com uma opcao
array[opcao]();
Saída
funcao1

A linguagem TS nos permite também passar uma função como argumento de uma outra função. Uma função pode ser passada como argumento utilizando seu nome.

Exemplo 9
function funcao_argumento():void {
  console.log("um string qualquer");
}

function funcao(fun):void {
  fun();
}

funcao(funcao_argumento);
Saída
um string qualquer

Quando utilizamos funções como parâmetros, fazemos uso do conceito de callback que consiste em passar uma função como argumento para que seja possível customizar algum tratamento de dados, regras ou outros por parte do usuário.

Diferente de linguagens como C, C++ e outras, a linguagem TS nos permite declarar funções dentro de funções com a sintaxe abaixo:

Sintaxe
function funcao_principal( ) 
{
  function funcao_aninhada()
  {
   //corpo 
  }
  
  //chamada função aninhada
  funcao_aninhada();
}

//chamada função principal 
funcao_principal();

Uma função aninhada pode acessar as variáveis de sua função pai e variáveis globais. Não é possível acessar uma função interna/aninhada fora de sua função pai.

Exemplo 10
let global = "global";
function funcao(): void 
{
    let local = "local";

    console.log(global);

    function funcao_interna():void 
    {
      console.log(local);
    }

  //chamada funcao aninhada
  funcao_interna();
}
//chamada função 
funcao();
Saída
global
local

A linguagem TS possui uma característica que nos permite realizar a sobrecarga de uma função. O número de parâmetros da funçao deve ser o mesmos e a última sobrecarga deve possuir parâmetros e retorno do tipo any.

Sintaxe
function nome_funcao(p1:tipo_dado1, p2:tipo_dado1): tipo_retorno1;

function nome_funcao(p1:tipo_dado2, p2:tipo_dado2): tipo_retorno2;

function nome_funcao(p1:any, p2:any): any {
    //corpo
}
Exemplo 11
function funcao(p:number,q:number):number;

function funcao(p:string,q:string):string;

function funcao(p:any,q:any):any{
    return p + q;
}

console.log(funcao(1,1));
console.log(funcao(1.5,1.5));
console.log(funcao("olá,","mundo"));
Saída
2 
3 
"olá,mundo"
  1. 27/08/2025 - revisão 3 - ajustes: pontuais, target de links, objetivos e sintaxes
  2. 13/09/2024 - revisão 1 - Pequenos ajustes gramaticais, explição 'Função com sobrecarga' e link de navegação Próximo
  3. 27/02/2024 - versão inicial