Je ne comprends pas ce que l'utilisation réelle des génériques dans typescirpt.L'utilisation réelle de générique dans tapuscrit
interface ICustomer
{
name: string;
age: number;
}
function CalcAverageAge<c extends ICustomer>(cust1: c, cust2: c): number
{
return (cust1.age + cust2.age)/2;
}
resNumber = CalcAverageCustomerAge({name: "Peter", age: 62},
{name: "Jason", age: 33});
Dans l'exemple ci-dessus, nous passons l'interface c pour fonctionner CalcAverageAge. Mais sans utiliser l'extension ICustomer, nous ne pouvons pas utiliser l'âge et le nom à l'intérieur de cette classe.
Ensuite, à quoi sert de passer le modèle (c) dans la fonction. Nous pouvons écrire directement le code ci-dessous au format
function CalcAverageAge(cust1: ICustomer, cust2: ICustomer): number
{
return (cust1.age + cust2.age)/2;
}
Pouvez-vous donner un exemple concret où les médicaments génériques est vraiment utile?
Je vais vous expliquer mon scénario où j'ai besoin d'utiliser des génériques.
interface t1{
a:String
b:number
}
interface t2 {
a:String
b:number
c:number
}
interface t3 {
a:String
b:number
d:number
}
class base<T extends t1> {
constructor(input : T, type:string){
//some common code for both derived1 and derived2
if(type==="derived1"){
console.log(input.c);// will throw error because t1 doesn't contains c
} else if (type==="derived2"){
console.log(input.d);// will throw error because t1 doesn't contains d
}
}
}
class derived1 extends<t2>{
constructor(){
var temp = {a:"11",b:2,c:3}
super(temp,"derived1");
}
class derived2 extends<t3>{
constructor(){
var temp = {a:"11",b:2,d:3}
super(temp,"derived2");
}
}
Peut-on y parvenir avec generice?
Si ce n'est pas ce qui serait le meilleur moyen de mise en œuvre en évitant les codes en double.
Dans votre question éditée, vous ne savez pas exactement ce que vous voulez accomplir. Quel est le but de cette architecture? '.c' et' .d' seront inaccessibles puisque vous ne donnez à la classe 'base' aucune information indiquant que ces propriétés existent. Si ce que vous voulez que ces propriétés soient accessibles, c'est la mauvaise conception et nous avons besoin de plus d'informations sur ce que vous voulez réellement faire pour être en mesure de vous donner une réponse décente sur la façon de l'atteindre. – Nypan