ExpertiDict

TypeScript · Avançado · Inglês · Técnico

strict function types

/stɹɪkt ˈfʌŋkʃən taɪps/substantivo

Flag strictFunctionTypes que compara os parâmetros de tipos de função de forma contravariante, em vez de bivariante, rejeitando atribuições inseguras. Não vale para métodos.

Onde usar

Explica por que (g: Gato) => void não é aceito onde se espera (a: Animal) => void. Aparece ao migrar para strict ou ao tipar callbacks e handlers.

Em código

class Animal { nome = '' }
class Gato extends Animal { miar() {} }
type Handler = (a: Animal) => void;
// const h: Handler = (g: Gato) => g.miar();
// erro: Animal não é atribuível a Gato
const ok: Handler = (a: Animal) => a.nome;

Exemplos

Strict function types rejects the handler that only accepts a Cat.

O strict function types rejeita o handler que só aceita um Gato.

Declare it as a method and the check is looser.

Declare como método e a checagem fica mais frouxa.

Cuidado

Não vale para métodos declarados com sintaxe de método, só para propriedades de função, uma exceção deliberada para manter tipos como Array compatíveis.

Sinônimos

strictFunctionTypes

Veja também

Todos os termos de TypeScript