ExpertiDict

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

mixin

/ˈmɪksɪn/substantivo

Padrão que compõe classes por funções que recebem uma classe base e devolvem uma subclasse com recursos extras, tipadas com um tipo construtor genérico.

Onde usar

Usado para reaproveitar comportamento sem herança múltipla, como Datado(Base). A tipagem se apoia num tipo construtor com rest any[], exigência do compilador para classes mixin.

Em código

type Ctor = new (...a: any[]) => {};
function Datado<B extends Ctor>(Base: B) {
  return class extends Base {
    criado = new Date();
  };
}
class Doc {}
class DocDatado extends Datado(Doc) {}

Exemplos

We wrote a mixin to add timestamps to any class.

Escrevemos um mixin para adicionar timestamps a qualquer classe.

A mixin class needs a constructor with a rest parameter of any[].

Uma classe mixin precisa de um construtor com parâmetro rest de any[].

Cuidado

Não confunda com herança comum: o mixin devolve uma nova classe a cada chamada, e o tipo de retorno é a interseção entre a base e a extensão.

Sinônimos

composição de classes

Antônimos

herança múltipla

Origem

Vem do sistema Flavors, de Lisp, que misturava ingredientes em classes como uma sorveteria mistura sabores.

Veja também

Todos os termos de TypeScript