Tipos asociados principales y throws tipados
Restrinja existenciales de protocolos y conozca la propagación de errores tipados de Swift 6.
Tipos asociados principales y throws tipados es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.
Tipos asociados principales
Swift 5.7 permite especificar tipos asociados principales en los protocolos, lo que habilita existenciales restringidos.
protocol Container<Element> {
associatedtype Element
var items: [Element] { get }
}
struct Bag<T>: Container { var items: [T] = [] }Existenciales restringidos
Con los tipos asociados principales puede escribir any Container para restringir el existencial.
func printItems(_ c: any Container<Int>) {
c.items.forEach { print($0) }
}
printItems(Bag(items: [1,2,3]))Existenciales restringidos para colecciones
Los protocolos de la biblioteca estándar, como Collection, ahora admiten tipos asociados principales.
func first(_ c: any Collection<String>) -> String? {
c.first
}
print(first(["a","b","c"]) ?? "none")Introducción a los throws tipados
Swift 6 introduce los throws tipados, que permiten declarar el tipo exacto de error que una función puede lanzar.
enum NetworkError: Error { case timeout, notFound }
func fetch() throws(NetworkError) -> Data {
throw NetworkError.timeout
}Catch exhaustivo con throws tipados
Como se conoce el tipo de error, el compilador puede verificar que todos los casos se gestionen de forma exhaustiva.
do {
let _ = try fetch()
} catch .timeout {
print("Timed out")
} catch .notFound {
print("Not found")
}Throws tipados en protocolos
Los requisitos de los protocolos pueden especificar un throw tipado, lo que permite que los tipos conformes proporcionen tipos de error precisos.
protocol Fetchable {
associatedtype Failure: Error
func fetch() throws(Failure) -> Data
}Rethrowing con throws tipados
rethrows funciona con throws tipados: la función externa propaga el tipo de error interno.
func map<T, E: Error>(_ array: [T], transform: (T) throws(E) -> T) throws(E) -> [T] {
try array.map { try transform($0) }
}Combinación de tipos asociados principales y throws tipados
Puede usar ambas funcionalidades conjuntamente para crear API precisas y con seguridad de tipos.
protocol Repository<Model> {
associatedtype Model
associatedtype Failure: Error
func fetchAll() throws(Failure) -> [Model]
}Throws tipados opacos
throws(any Error) equivale a los throws sin tipo y proporciona una vía de escape.
func riskyOp() throws(any Error) {
// can throw any error
}Migración: de throws sin tipo a throws tipados
Ruta de migración: anote paso a paso las funciones existentes que lanzan errores con el tipo de error concreto.
// Before:
func load() throws -> Data { ... }
// After:
func load() throws(NetworkError) -> Data { ... }Throws tipados y async
Los throws tipados se combinan de forma natural con async: async throws(E) es una sintaxis válida.
func fetchAsync() async throws(NetworkError) -> Data {
throw NetworkError.notFound
}Comprobación rápida
¿Qué permite un tipo asociado principal en un protocolo?
Resumen de la lección
Los tipos asociados principales (Swift 5.7) permiten existenciales restringidos como any Collection. Los throws tipados (Swift 6) permiten declarar tipos de error exactos para bloques catch exhaustivos. Ambas funcionalidades mejoran la seguridad de tipos y la expresividad de las API.
Aprende Swift con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 122
- Lecciones
- 409
Preguntas frecuentes
¿La lección «Tipos asociados principales y throws tipados» es gratis?
Sí — el texto completo de «Tipos asociados principales y throws tipados» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Tipos asociados principales y throws tipados»?
Restrinja existenciales de protocolos y conozca la propagación de errores tipados de Swift 6. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Swift Academy?
No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Tipos asociados principales y throws tipados»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Swift Academy?
Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Restricciones genéricas y cláusulas where
- Tipos opacos con la palabra clave some
- Existenciales con any y type erasure
- Tipos asociados principales y throws tipados