Types associés principaux et erreurs typées
Contraindre les existentielles de protocoles et propager les erreurs typées avec Swift 6.
Types associés principaux et erreurs typées est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.
Types associés principaux
Swift 5.7 vous permet de spécifier des types associés principaux dans les protocoles, ce qui permet d’utiliser des existentiels contraints.
protocol Container<Element> {
associatedtype Element
var items: [Element] { get }
}
struct Bag<T>: Container { var items: [T] = [] }Existentiels contraints
Avec des types associés principaux, vous pouvez écrire any Container pour restreindre l’existentiel.
func printItems(_ c: any Container<Int>) {
c.items.forEach { print($0) }
}
printItems(Bag(items: [1,2,3]))Existentiels contraints pour les collections
Les protocoles de la bibliothèque standard, comme Collection, prennent désormais en charge les types associés principaux.
func first(_ c: any Collection<String>) -> String? {
c.first
}
print(first(["a","b","c"]) ?? "none")Introduction aux exceptions typées
Swift 6 introduit les exceptions typées, afin de vous permettre de déclarer le type d’erreur exact qu’une fonction peut lever.
enum NetworkError: Error { case timeout, notFound }
func fetch() throws(NetworkError) -> Data {
throw NetworkError.timeout
}Gestion exhaustive avec des exceptions typées
Comme le type d’erreur est connu, le compilateur peut vérifier que tous les cas sont traités de manière exhaustive.
do {
let _ = try fetch()
} catch .timeout {
print("Timed out")
} catch .notFound {
print("Not found")
}Exceptions typées dans les protocoles
Les exigences des protocoles peuvent spécifier une exception typée, ce qui permet aux types conformes de fournir des types d’erreur précis.
protocol Fetchable {
associatedtype Failure: Error
func fetch() throws(Failure) -> Data
}Relancer des exceptions avec des exceptions typées
rethrows fonctionne avec les exceptions typées : la fonction externe propage le type d’erreur interne.
func map<T, E: Error>(_ array: [T], transform: (T) throws(E) -> T) throws(E) -> [T] {
try array.map { try transform($0) }
}Combiner les AT principaux et les exceptions typées
Vous pouvez utiliser ces deux fonctionnalités ensemble pour créer des API précises et sûres du point de vue des types.
protocol Repository<Model> {
associatedtype Model
associatedtype Failure: Error
func fetchAll() throws(Failure) -> [Model]
}Exceptions typées opaques
throws(any Error) équivaut aux exceptions non typées et vous offre une porte de sortie.
func riskyOp() throws(any Error) {
// can throw any error
}Migration : des exceptions non typées aux exceptions typées
Procédez par étapes : annotez les fonctions existantes qui lèvent des exceptions avec le type d’erreur concret.
// Before:
func load() throws -> Data { ... }
// After:
func load() throws(NetworkError) -> Data { ... }Exceptions typées et asynchronisme
Les exceptions typées se combinent naturellement avec l’asynchronisme : async throws(E) est une syntaxe valide.
func fetchAsync() async throws(NetworkError) -> Data {
throw NetworkError.notFound
}Vérification rapide
Que permet un type associé principal dans un protocole ?
Récapitulatif de la leçon
Les types associés principaux (Swift 5.7) permettent d’utiliser des existentiels contraints comme any Collection. Les exceptions typées (Swift 6) vous permettent de déclarer les types d’erreur exacts pour des blocs de gestion exhaustifs. Ces deux fonctionnalités améliorent la sûreté des types et l’expressivité des API.
Apprends Swift avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 122
- Leçons
- 409
Questions Fréquemment Posées
La leçon « Types associés principaux et erreurs typées » est-elle gratuite ?
Oui — le texte complet de « Types associés principaux et erreurs typées » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Types associés principaux et erreurs typées » ?
Contraindre les existentielles de protocoles et propager les erreurs typées avec Swift 6. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Swift Academy ?
Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Types associés principaux et erreurs typées » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?
Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Contraintes génériques et clauses where
- Types opaques avec le mot-clé some
- Existentielles avec any et effacement de type
- Types associés principaux et erreurs typées