IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

TypeScript Discussion :

propriete class setted plus tard


Sujet :

TypeScript

  1. #1
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 435
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 435
    Points : 4 562
    Points
    4 562
    Par défaut propriete class setted plus tard
    hello,

    je reviens vers vous pour un nouveau probleme "pas comme d'habitude"

    comment faire pour definir les proprietes privees d'une classe, mais qui seront "instancies" plus tard (pas dans le constructeur)

    par exemple, je voudrai faire quelque chose comme :
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Voiture {
        private marque:string;
        private annee:number;
        constructor(m:string) {
            this.marque = m;
        }
        addYear(y:number) {
            this.annee = y;
        }
    }
    la, TS n'est pas content car
    Property 'annee' has no initializer and is not definitely assigned in the constructor.
    du coup, pour palier a ca, je passe par
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Voiture {
        private marque:string;
        private annee:number|null;// |null ajoute
        constructor(m:string) {
            this.marque = m;
            this.annee = null;// initialisation a null ajoute
        }
        addYear(y:number) {
            this.annee = y;
        }
    }
    et la, TS est content.. mais je ne trouve pas ca terrible...
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 914
    Points : 43 990
    Points
    43 990
    Par défaut
    Bonjour,
    as tu essayé avec un ! definite assignment assertion operator
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Voiture {
        private marque: string;
        private annee!: number;
        constructor(m: string) {
            this.marque =  m;
        }
        addYear(y: number) {
            this.annee =  y;
        }
    }

  3. #3
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 435
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 435
    Points : 4 562
    Points
    4 562
    Par défaut
    non, c'est vrai que je n'ai pas utilise le ! (j'ai teste, ca resoud effectivement le probleme)
    => j'avais cru comprendre que c'etait pour dire a TS "je sais mieux que toi, je te dis que cette variable est de ce type..."
    ==> du coup, j'ai toujours essaye de ne pas l'utiliser

    peux-tu m'expliquer comment interpreter ce !=> et est-ce une bonne pratique de l'utiliser ?

    est-ce une bonne pratique pour ce genre de cas (pour mes autres classes qui ont ce concept) je ne me pose pas de question et je mets de ! partout ?

    edit : typo
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 914
    Points : 43 990
    Points
    43 990
    Par défaut
    => j'avais cru comprendre que c'etait pour dire a TS "je sais mieux que toi, je te dis que cette variable est de ce type..."
    Ce n'est pas exactement la conclusion que j'ai tiré de :
    Citation Envoyé par TS v.2.7
    The definite assignment assertion is a feature that allows a ! to be placed after instance property and variable declarations to relay to TypeScript that a variable is indeed assigned for all intents and purposes, even if TypeScript’s analyses cannot detect so.

  5. #5
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 435
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 435
    Points : 4 562
    Points
    4 562
    Par défaut
    ok, je comprends mieux ...
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

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

Discussions similaires

  1. [C#] Classe Settings
    Par Seth77 dans le forum C#
    Réponses: 8
    Dernier message: 24/11/2006, 19h05
  2. Réponses: 2
    Dernier message: 31/10/2006, 17h29
  3. [debutant][JNI]Stocker des objet pour les rappeler plus tard
    Par Celenor dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 28/03/2004, 03h28

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