Discussion: Surcharge de toString

  1. #1
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    octobre 2012
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : octobre 2012
    Messages : 596
    Points : 1 194
    Points
    1 194

    Par défaut Surcharge de toString

    Bonjour à tous,

    une petite question de débutant : comment peut-on surcharger la méthode toString d'un objet en TypeScript ? J'ai fait ça :

    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
    export class Location {
    
      constructor() {
        this.postCode = null;
    }
    
      streetNumber: string;
    multiplier: string;
    street: string;
    extension: string;
    postCode: number;
    postCodeExtension: string;
    city: string;
    
    public toString(): string {
        let r: string = '';
    r += this.streetNumber;
    if(this.multiplier != null){
          r+=this.multiplier;
    }
        r += this.street;
    if(this.extension != null){
          r+=this.extension;
    }
        r += this.postCode;
    if(this.postCodeExtension != null){
          r+=this.postCodeExtension;
    }
        r += this.city;
    return r;
    }
    }
    mais ça ne marche pas... Je continu d'avoir [object Object] comme résultat... Si quelqu'un peut éclairer ma lanterne, merci d'avance.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : septembre 2013
    Messages : 202
    Points : 573
    Points
    573

    Par défaut

    Bonjour,
    Ça devrait fonctionner.

  3. #3
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    octobre 2012
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : octobre 2012
    Messages : 596
    Points : 1 194
    Points
    1 194

    Par défaut

    Oui, ça devrait, mais ce n'est pas le cas . Le JS compilé contient bien
    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
    Location.prototype.toString = function () {
        var r = '';
    r += this._streetNumber;
    if (this._multiplier != null) {
            r += this._multiplier;
    }
        r += this._street;
    if (this._extension != null) {
            r += this._extension;
    }
        r += this._postCode;
    if (this._postCodeExtension != null) {
            r += this._postCodeExtension;
    }
        r += this._city;
    return r;
    };
    Ce qui devrait être une surcharge de toString, mais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(this.location.toString());
    me renvois toujours [object Object] ...
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : septembre 2013
    Messages : 202
    Points : 573
    Points
    573

    Par défaut

    Peut-être que "this.location" contient autre chose qu'une instance de Location ?

  5. #5
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    octobre 2012
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : octobre 2012
    Messages : 596
    Points : 1 194
    Points
    1 194

    Par défaut

    Non, j'ai vérifié. En fait, le toString est appelé dans un datatable primeng, pour afficher l'adresse complète dans une colonne. A la sélection d'une ligne, j'ai un formulaire qui s'ouvre en dialog avec le détail, et là l'adresse est bien visible dans les différents champs, mais détaillée, pas en appel de toString... Donc le problème ne vient pas de là.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

Discussions similaires

  1. Surcharger la méthode ToString du type Boolean
    Par Kropernic dans le forum VB.NET
    Réponses: 13
    Dernier message: 10/04/2014, 15h29
  2. Comment surcharger ToString()
    Par PatricePatrice dans le forum C#
    Réponses: 2
    Dernier message: 15/09/2012, 22h53
  3. Réponses: 7
    Dernier message: 05/02/2010, 14h21
  4. [KeyValuePair] surcharge de toString()
    Par TotorLeCastor dans le forum C#
    Réponses: 8
    Dernier message: 05/02/2009, 11h34
  5. Réponses: 8
    Dernier message: 20/11/2002, 11h50

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