Disons que je définis la personne modèle
export class Gender {
public id: number;
public name: string;
}
Je veux que le sexe soit «masculin» ou «féminin».
Je suppose que je dois créer une autre classe (dans le même modèle ou séparé ??).
export class Person {
public firstName: string;
public lastName: string;
public gender: ???;
}
et construisez des valeurs [{0: "Male"}, {1: "Female"}]
Est-ce la bonne façon de procéder? Si oui, comment définir ce type de genre dans le modèle de personne?
4 Réponses :
Tout d'abord dans Typescript, utilisez des interfaces au lieu de classes pour les modèles avec uniquement des attributs. Utilisez des classes uniquement lorsque vous voulez un constructeur et définissez des méthodes qui effectuent un travail de calcul.
Il existe 3 façons de résoudre votre problème, vous pouvez soit utiliser une interface dans celle que vous avez mentionnée, ou vous pouvez définir Gender comme un code enum , ou vous faites ceci:
export interface Person {
public firstName: string;
public lastName: string;
public gender: 'Male' | 'Female';
}
Génial. Question étendue à lui. Et si à l'avenir je voulais avoir ces valeurs dans une autre langue. Je les stockais dans BE (dictionnaire) et obtiendrais un appel API. Dois-je utiliser la classe ou l'interface alors?
Cela ne devrait pas avoir d'importance car la communication API se fait généralement via des chaînes. La différence entre une interface et une classe dans Typescript est que les interfaces ne sont pas transpilées en Javascript, donc si vous utilisez des classes tout le temps, votre application sera plus grande que si vous utilisez des interfaces. Les classes doivent être utilisées lorsque vous souhaitez effectuer un travail lorsque vous initialisez votre objet, par exemple si vous voulez définir une valeur par défaut ou faire des calculs ou avoir des méthodes..etc. Mais pour les attributs uniquement, il est préférable d'utiliser des interfaces.
Utilisez le type booléen
public gender: boolean;
Si la valeur de gender est vraie, cela signifie homme, autre femme C'est tout
transgenre sera alors hors de portée!
Oh! alors nous pouvons aller avec d'autres réponses comme: public gender: 'Male' | «Femme» | "Autre";
Vous pouvez soit suivre votre chemin de classe, puis le définir comme ceci:
export class Person {
public firstName: string;
public lastName: string;
public gender: "Male" | "Female";
}
ou utiliser des chaînes:
export class Person {
public firstName: string;
public lastName: string;
public gender: Gender;
}
De cette façon vous n'avez pas besoin d'un autre cours.
Vous pouvez utiliser enum
export enum Gender{
Male,
Female,
Other
}
export class Person {
public firstName: string;
public lastName: string;
public gender: Gender;
}