Tipos de extensão para wrappers sem custo
Envolva um tipo sem sobrecarga em tempo de execução.
Tipos de extensão para wrappers sem custo é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Dart Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Dart Academy inclui 4 aulas no total.
Uma ferramenta diferente
Um tipo de extensão é um recurso mais recente: ele envolve um tipo existente para oferecer uma nova interface, sem custo em tempo de execução.
Envolva sem empacotar
Ao contrário de uma classe encapsuladora real, um tipo de extensão não adiciona nenhum objeto em tempo de execução. Em tempo de execução, ele é simplesmente o valor subjacente.
extension type UserId(int id) {}O tipo de representação
O valor entre parênteses é o tipo de representação. Aqui, um UserId é, na prática, apenas um int com um nome mais seguro.
extension type Meters(double value) {}Crie um com facilidade
Você constrói um tipo de extensão como se chamasse um construtor, passando diretamente o valor subjacente.
var id = UserId(42);
var d = Meters(3.5);Adicione métodos seguros
Dentro do corpo, você pode adicionar métodos e acessores que operam sobre o valor envolvido, dando a ele um significado real.
extension type Meters(double value) {
Meters plus(Meters o) => Meters(value + o.value);
}Mais forte que typedef
Um typedef é apenas um alias, mas um tipo de extensão é um tipo distinto. Você não pode misturar acidentalmente um UserId com um int comum.
int raw = 42;
// UserId u = raw; // error: not interchangeableOculte a API subjacente
Por padrão, um tipo de extensão oculta os membros do tipo envolvido, portanto apenas os métodos que você expõe podem ser chamados.
var m = Meters(2.0);
// m.toStringAsFixed(2); // not available unless exposedOu use implements para expor
Adicione implements para encaminhar os membros subjacentes, permitindo que as chamadas usem tanto sua API quanto o tipo base.
extension type Score(int value) implements int {}
print(Score(9) + 1); // 10Nenhum custo extra em tempo de execução
Como nenhum objeto real é criado, os tipos de extensão não custam nada em tempo de execução. Você obtém segurança de tipos gratuitamente.
Ótimo para identificadores de domínio
Eles são excelentes para identificadores tipados, como UserId ou e-mail, impedindo que você passe o int errado para o local errado.
void load(UserId id) {}
load(UserId(7)); // load(7) would not compileExtensões versus tipos de extensão
Uma extensão adiciona métodos a um tipo compartilhado por todos; um tipo de extensão cria um tipo novo e distinto ao redor de um valor.
Verificação rápida
Última verificação: o que torna os tipos de extensão especiais?
Recapitulação: tipos de extensão
Você conheceu os tipos de extensão: envoltórios distintos e sem custo sobre um tipo de representação, ideais para identificadores e unidades seguros sem sobrecarga em tempo de execução. 🏁
Aprenda Dart com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Tipos de extensão para wrappers sem custo” é grátis?
Sim — o texto completo de “Tipos de extensão para wrappers sem custo” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Dart Academy, atualize para CoddyKit PRO. O curso de Dart Academy inclui 4 aulas no total.
O que vou aprender em “Tipos de extensão para wrappers sem custo”?
Envolva um tipo sem sobrecarga em tempo de execução. Você pratica Dart Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Dart Academy?
Nenhuma experiência prévia é necessária. Dart Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Tipos de extensão para wrappers sem custo”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Dart Academy?
Sim. Cada aula de Dart Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Escrever sua primeira extensão
- Extensões em genéricos
- Membros estáticos de extensão e conflitos
- Tipos de extensão para wrappers sem custo