Tipos associados principais e erros tipados
Restrinja existenciais de protocolos e a propagação de erros tipados do Swift 6.
Tipos associados principais e erros tipados é uma aula grátis de Swift 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 Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.
Tipos associados primários
O Swift 5.7 permite especificar tipos associados primários em protocolos, possibilitando existenciais restritos.
protocol Container<Element> {
associatedtype Element
var items: [Element] { get }
}
struct Bag<T>: Container { var items: [T] = [] }Existenciais restritos
Com tipos associados primários, você pode escrever any Container para restringir o existencial.
func printItems(_ c: any Container<Int>) {
c.items.forEach { print($0) }
}
printItems(Bag(items: [1,2,3]))Existenciais restritos por coleção
Protocolos da biblioteca padrão, como Collection, agora são compatíveis com tipos associados primários.
func first(_ c: any Collection<String>) -> String? {
c.first
}
print(first(["a","b","c"]) ?? "none")Introdução aos lançamentos tipados
O Swift 6 introduz lançamentos tipados, permitindo declarar o tipo exato de erro que uma função pode lançar.
enum NetworkError: Error { case timeout, notFound }
func fetch() throws(NetworkError) -> Data {
throw NetworkError.timeout
}Captura exaustiva com lançamentos tipados
Como o tipo de erro é conhecido, o compilador pode verificar se todos os casos foram tratados de forma exaustiva.
do {
let _ = try fetch()
} catch .timeout {
print("Timed out")
} catch .notFound {
print("Not found")
}Lançamentos tipados em protocolos
Os requisitos de um protocolo podem especificar um lançamento tipado, permitindo que os tipos conformes forneçam tipos de erro precisos.
protocol Fetchable {
associatedtype Failure: Error
func fetch() throws(Failure) -> Data
}Relançamento com lançamentos tipados
rethrows funciona com lançamentos tipados: a função externa propaga o tipo de erro interno.
func map<T, E: Error>(_ array: [T], transform: (T) throws(E) -> T) throws(E) -> [T] {
try array.map { try transform($0) }
}Combinando AT primário com lançamentos tipados
Você pode usar os dois recursos em conjunto para criar APIs precisas e com segurança de tipos.
protocol Repository<Model> {
associatedtype Model
associatedtype Failure: Error
func fetchAll() throws(Failure) -> [Model]
}Lançamentos tipados opacos
throws(any Error) é o equivalente aos lançamentos não tipados, oferecendo uma alternativa flexível.
func riskyOp() throws(any Error) {
// can throw any error
}Migração: de lançamentos não tipados para tipados
Caminho de migração: anote passo a passo as funções existentes que lançam erros com o tipo de erro concreto.
// Before:
func load() throws -> Data { ... }
// After:
func load() throws(NetworkError) -> Data { ... }Lançamentos tipados e operações assíncronas
Lançamentos tipados combinam naturalmente com operações assíncronas: async throws(E) é uma sintaxe válida.
func fetchAsync() async throws(NetworkError) -> Data {
throw NetworkError.notFound
}Verificação rápida
O que um tipo associado primário em um protocolo possibilita?
Recapitulação da lição
Tipos associados primários (Swift 5.7) possibilitam existenciais restritos, como any Collection. Lançamentos tipados (Swift 6) permitem declarar tipos de erro exatos para blocos de captura exaustivos. Os dois recursos aprimoram a segurança de tipos e a expressividade das APIs.
Aprenda Swift 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
- 122
- Aulas
- 409
Perguntas Frequentes
A aula “Tipos associados principais e erros tipados” é grátis?
Sim — o texto completo de “Tipos associados principais e erros tipados” é 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 Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.
O que vou aprender em “Tipos associados principais e erros tipados”?
Restrinja existenciais de protocolos e a propagação de erros tipados do Swift 6. Você pratica Swift 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 Swift Academy?
Nenhuma experiência prévia é necessária. Swift 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 associados principais e erros tipados”?
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 Swift Academy?
Sim. Cada aula de Swift 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
- Restrições genéricas e cláusulas where
- Tipos opacos com a palavra-chave some
- Existenciais com any e apagamento de tipo
- Tipos associados principais e erros tipados