TypeScriptTypes utilitaires
InstanceType<Type>
Récupère le type de l’objet créé par le constructeur d’une classe.
Exemple
#TypeScript
class Badge {
constructor(public name: string) {}
}
class Certificate {
constructor(public course: string) {}
}
function create<C extends new (arg: string) => object>(Cls: C, arg: string): InstanceType<C> {
return new Cls(arg) as InstanceType<C>
}
const badge = create(Badge, 'Série de 7 jours')
const cert = create(Certificate, 'HTML et CSS')
console.log(badge.name, '|', cert.course)Résultat
Série de 7 jours | HTML et CSS
Définition et utilisation
#InstanceType<Type> prend un type de constructeur et renvoie le type de l’objet qu’il crée. Pour typeof Player, le résultat est le type Player.
Dans le code courant, une classe est déjà le type de ses propres instances, donc InstanceType est surtout utile dans du code générique : fabriques, registres de classes et fonctions qui prennent une classe en argument.
Pour les classes abstraites, il faut utiliser le type abstract new (...args: any) => any dans la contrainte du paramètre de type.
Syntaxe
#Syntaxe
type Instance = InstanceType<typeof Class>Paramètres de type
#Type
type de constructeur
Le type d’une classe ou d’une fonction constructrice.
Bonnes pratiques
#- Dans du code habituel, le nom de la classe suffit comme type. Réservez
InstanceTypeau code générique. - Pour le type des paramètres du constructeur, utilisez
ConstructorParameters<typeof Class>.
Entrées associées
#- ReturnType<Type>Récupère le type de la valeur renvoyée par une fonction.
- Génériques <T>Types et fonctions avec un paramètre de type, qui fonctionnent pour plusieurs types sans perdre en précision.
- abstract classUne classe de base que vous ne pouvez pas créer directement, avec des méthodes à compléter par ses descendants.
- ConstructorParameters<Type>Récupère les types des paramètres du constructeur d’une classe sous forme de tuple.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.