ExpertiDict

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

bivariance

/baɪˈvɛɹiəns/substantivo

Exceção de variância em que parâmetros de métodos, declarados com sintaxe de método, são comparados nos dois sentidos, aceitando tipos mais específicos ou mais gerais.

Onde usar

Explica por que uma interface com o método tratar(e: Evento) aceita implementações com parâmetro mais específico, enquanto uma propriedade de função, sob strictFunctionTypes, recusa.

Em código

class A { a = 1; }
class B extends A { b = 2; }
interface M { f(x: A): void }
interface P { f: (x: A) => void }
const m: M = { f(x: B) {} }; // ok
// const p: P = { f(x: B) {} }; // erro

Exemplos

Methods are bivariant even with strictFunctionTypes on.

Métodos são bivariantes mesmo com strictFunctionTypes ligado.

Declare it as a property to avoid method bivariance.

Declare como propriedade para evitar a bivariância de método.

Cuidado

A bivariância só sobra na sintaxe de método; com strictFunctionTypes, parâmetros de propriedades e de tipos de função são checados de forma contravariante.

Sinônimos

bivariância de métodos

Antônimos

contravariância

Veja também

Todos os termos de TypeScript