2017-03-21 21 views
1

Ich bin derzeit auf einem grundlegenden Chat-Anwendung arbeitet mit Ionic 2 und haben über diese Syntax ein paar Mal kommen:Verwendung von <ClassName[]> Syntax

private someFunction(): Observable<ClassName[]> { 

Ich habe mich zu verstehen, was die <ClassName[]> tut, aber bin nicht sicher, ob dies etwas spezifisch für Ionic 2, Angular 2 oder Typescript ist.

Ich habe Dokumente von jedem gesucht, aber noch einen Hinweis darauf zu finden.

+0

Es ist die Definition des Typs, den das Observable als seinen Wert hält. – danatcofo

+2

Es ist eine Art Script-Sache. Mit dieser Syntax weisen Sie den TS-Compiler an, den angegebenen Typ als Ergebnis zu erwarten. Observable ist ein sogenanntes [TypeScript generic] (https://www.typescriptlang.org/docs/handbook/generics.html) und erfordert, dass Sie einen Typ als Argument übergeben. – Sasxa

Antwort

2

Wie es in den Kommentaren gesagt wurde, ist es eine Typoskript Syntax Aspekt, aber auch in Ihrem Fall verwenden Sie RxJS Observable, die eine Implementierung der Observer Design Pattern ist.

Erste von allen, Typescript's generics. Lassen Sie uns auf eine intuitivere Weise darüber sprechen.

class List<T> { 

    private _list: T[] = []; 

    public get(index: number): T { 
     return this._list[index]; 
    } 

    public add(item: T) { 
     return this._list.push(item); 
    } 
} 

Damit Sie List aller T Arten erstellen:

let myStrings = new List<String>(); 
let myNumber = new List<number>(); 
let myDates = new List<Date>(); 

und die Arbeit mit einem richtigen typisierte Methode:

myStrings.add("foo"); // it'll require a string type 
myStrings.get(0); // returns "foo", a string typed var 

nun über die RxJS Obserable<T>, es ist so ziemlich das Gleiche Sache, die generische T ist der Objekttyp, mit dem Sie arbeiten werden. Observables werden hauptsächlich verwendet, um das Abhören von asynchronen Ereignissen zu steuern, wenn ein Teil Ihres Codes benachrichtigt werden muss, wenn etwas passiert. Zum Beispiel: wenn die Ajax-Anfrage endet, wenn ein Element angeklickt wird oder wenn ein Timeout endet.

let userObservable = new Observable<User> ..... 

userObservable.subscribe(user => { 
    console.log(user); // [User object], the user param will be typed to the Class User 
}); 

Sie zeichnen grundsätzlich zu einer beobachtbaren, die T mit einem Objekt vom Typ arbeiten.

+0

Vielen Dank. Sehr klar erklärt und hat mir geholfen, vollständig zu verstehen! – helenkitt

0

Dies ist TypeScript Generics.

Wenn Sie diese Observable abonnieren, sollten Sie ein Array von "ClassName" -Objekten erwarten.

Verwandte Themen