1. #1
    Membre régulier
    Profil pro
    Inscrit en
    mars 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2005
    Messages : 123
    Points : 87
    Points
    87

    Par défaut Définition d'une classe avec sous type

    Bonjour,

    je voudrai définir des champs avec des sous-types (min, max) mais lorsque que je crée l'objet il me dit que le champ est undefined et donc que je ne peux accéder à sa propriété min ou max :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    export class CombatSettings {
        // Bornes du ratio du rapport de force ATT/DEF
        attackRatio: { min: number, max: number };
        // Chance de gagner en défense
        defBase: number;
        // Chance de mourir en embuscade
        assaultDeathRatio: number;
        // Chance prendre des minerais lors d'une capture de territorie
        chanceToCaptureMinerals: number;
        // Ratio de capture des minéraux
        mineralsCaptureRatio: number;
     
        mineralsProduction: {
            // Poucentage de tonnes produite sur un territoire
            territory: {
                min: number;
                max: number;
            },
            // Pourcentage de tonnes produite sur un territoire d'une région possédée
            region: number
        }
        // Nombre de points de technologie par tour
        pointOfTechnology: { perCapture: number, maxPerTour: number }
     
        constructor() {
            this.assaultDeathRatio = 0.25;
            this.attackRatio.max = 2.40;
            this.attackRatio.min = 1.00;
            this.chanceToCaptureMinerals = 0.5;
            this.defBase = 0,6;
            this.mineralsCaptureRatio = 0,15;
            this.mineralsProduction.territory.max = 0,5;
            this.mineralsProduction.territory.min = 0,25;
            this.mineralsProduction.region = 0,75;
            this.pointOfTechnology.maxPerTour = 1;
            this.pointOfTechnology.perCapture = 1;
        }
    }
    D'avance je vous remercie,

    Mand.

  2. #2
    Membre confirmé
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2013
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : septembre 2013
    Messages : 205
    Points : 577
    Points
    577

    Par défaut

    La définition d'un type (ici "{ min: number, max: number }") ne crée pas d'objet. Dans le constructeur, il faut créer l'objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            this.attackRatio = {
                min: 1.00,
                max: 2.40
            };

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    mars 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2005
    Messages : 123
    Points : 87
    Points
    87

    Par défaut

    jusque là j'ai bien compris, mais ça ne me dit pas comment faire.

  4. #4
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Ninja
    Inscrit en
    juillet 2013
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ninja

    Informations forums :
    Inscription : juillet 2013
    Messages : 1 139
    Points : 6 450
    Points
    6 450
    Billets dans le blog
    43

    Par défaut

    La réponse de Paleo est correcte.

    Il faut remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            this.attackRatio.max = 2.40;
            this.attackRatio.min = 1.00;
    par ce qu'il a indiqué.
    Tutoriels et FAQ TypeScript

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    mars 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2005
    Messages : 123
    Points : 87
    Points
    87

    Par défaut

    Ok, je n'avais pas vu la nuance.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/09/2009, 15h54
  2. Réponses: 5
    Dernier message: 23/10/2008, 18h08
  3. Réponses: 2
    Dernier message: 24/06/2008, 16h04
  4. Réponses: 5
    Dernier message: 26/05/2005, 15h40
  5. [Composant] publier une propriété avec un type perso
    Par jpc34 dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/10/2004, 08h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo