Como Definir o Tipo de uma Variável que Armazena uma Função no TypeScript

No JavaScript, temos funções nomeadas e funções anônimas. O segundo tipo pode ser armazenado em uma variável, como no exemplo abaixo, já escrito com anotações de tipo do TypeScript:
let minhaFuncao = function(a: string, b: number): string {
return `O valor da string é ${a} e o valor do numero é ${b}`;
};Variáveis no TypeScript podem ter uma anotação de tipo, por exemplo:
let meuNumero: number = 48;A expressão acima declara uma variável do tipo number com o valor 48.
Podemos adicionar o tipo de uma variável que armazena uma função da seguinte maneira, usando o nosso exemplo anterior:
1let minhaFuncao: (x: string, y: number) => string =
2function(a: string, b: number): string {
3 return `O valor da string é ${a} e o valor do numero é ${b}`;
4};No exemplo acima, o tipo da variável minhaFuncao é a assinatura de função (x: string, y: number) => string.
Os nomes dos parâmetros foram mudados de propósito para você saber que o que importam são os tipos e não os nomes. O nome da variável na assinatura pode ser diferente da definição no lado direito do igual, mas os tipos não podem ser diferentes.
Note que separamos os parâmetros de entrada do tipo do valor de saída com a seta =>. No exemplo, temos como parâmetros da função o x e y, de tipo string e number, respectivamente. O tipo do valor de retorno e declarado no lado direito da seta =>, nesse caso uma string.
Declarar a assinatura do tipo da variável as vezes pode deixar a linha muito longa, então podemos aproveitar a inferência de tipo do compilador do TypeScript. Às vezes definindo de um lado da expressão basta para que o compilador deduza os tipos do outro lado.
Para aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech:
https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb
Nos vemos lá!
Leia a seguir

O Que É a Linguagem de Programação Rust? Um Guia Simples da Linguagem Rápida Que Não Deixa Você Travar
Um guia simples e sem jargões sobre o Rust, a linguagem tão rápida quanto o C que impede famílias inteiras de erros de memória antes de o programa rodar. Entenda a ideia de posse, por que gigantes da tecnologia o adotam e onde ele é usado.

O Que É a Linguagem de Programação Go? Um Guia Simples da Linguagem da Nuvem
Um guia simples e sem jargões sobre o Go, a linguagem simples e rápida que o Google criou para a nuvem. Entenda o que são goroutines, por que um programa Go é um arquivo só e como o Go passou a mover o Docker, o Kubernetes e boa parte da internet.

O Que É a Linguagem de Programação Ruby? Um Guia Simples da Linguagem Feita para a Felicidade
Um guia simples e sem jargões sobre o Ruby, a linguagem de programação feita para deixar os programadores felizes. Entenda por que o código Ruby parece inglês, como o Ruby on Rails move sites como GitHub e Shopify, e onde o Ruby brilha.
Comentários
Seja gentil e específico. Comentários com links de contas novas aparecem depois da análise de um moderador.