TypeScript · Avançado · Inglês · Técnico
strict function types
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