2016-05-20 5 views
2

Hier ist das Objekt, das von einer Methode in einer Klasse zurückgegeben wird, definieren:Wie Funktion Rückgabetyp eines benutzerdefinierten Objektliteral

public dbParameters() // HERE 
{ 
    return { 
     "values": this.valuesForDb, 
     "keys": this.keysForDb, 
     "numbers": this.numberOfValues, 
    } 
} 

Könnten Sie bitte beraten, wie die Art der Funktion Rückkehr zu definieren, in diesem Fall ? Oder ist dies nicht der richtige Weg, und ich sollte einen anderen Typ anstelle des Objektliterals verwenden?

Antwort

6

Eine Möglichkeit, nur eine Nachricht sein könnte, ist dieses Ergebnis ein dictinary:

public dbParameters() : { [key: string]: any} 
{ 
    return { 
     "values": this.valuesForDb, 
     "keys": this.keysForDb, 
     "numbers": this.numberOfValues, 
    } 
} 

Die andere eine Schnittstelle

export interface IResult { 
    values: any[]; 
    keys: string[]; 
    numbers: number[]; 
} 


export class MyClass 
{ 
    public dbParameters() : IResult 
    { 
     return { 
      values: this.valuesForDb, 
      keys: this.keysForDb, 
      numbers: this.numberOfValues, 
     } 
    } 
} 

Mit interface nutzen könnten wir großen Vorteil haben ... es könnte sein, wiederverwendet an vielen Orten (Erklärung, Verwendung ...) so wäre die bevorzugte

Und auch wir können com stellen die meisten spezifische Einstellung der Eigenschaften

export interface IValue { 
    name: string; 
    value: number; 
} 
export interface IResult { 
    values: IValue[]; 
    keys: string[]; 
    numbers: number[]; 
} 

Wiedergabe mit that here

+0

Superb Antwort dank führen, werde ich mit der Interface-Lösung gehen. Schlagen Sie vor, Schnittstellen für das gesamte Projekt oder für einzelne Anwendungen des Projekts in einer einzigen Datei zu speichern? –

+1

Ja, genau .. Schnittstellen sollten extrahiert werden * (nicht nur eine Datei, sondern könnte noch mehr - pro logische Struktur) * ... so haben wir zum Beispiel wenige von ihnen - und wir versuchen, sie gruppiert zu halten Module, Typen ... –

Verwandte Themen