我目前正在使用Ionic 2处理一个基本的聊天应用,并且几次遇到过这种语法:
private someFunction(): Observable<ClassName[]> {
我一直在寻找<ClassName[]>
正在做什么,但不确定这是否是Ionic 2,Angular 2或Typescript特有的。
我搜索了每个人的文档,但我还没有找到任何参考文献。
答案 0 :(得分:2)
正如评论中所说,它是一个Typescript语法方面,但在你的情况下,你正在使用RxJS Observable,它是Observer Design Pattern的一个实现。
最重要的是,Typescript's generics。让我们用更直观的方式来讨论它。
class List<T> {
private _list: T[] = [];
public get(index: number): T {
return this._list[index];
}
public add(item: T) {
return this._list.push(item);
}
}
这样您就可以创建所有List
种类的T
:
let myStrings = new List<String>();
let myNumber = new List<number>();
let myDates = new List<Date>();
使用正确的类型化方法:
myStrings.add("foo"); // it'll require a string type
myStrings.get(0); // returns "foo", a string typed var
现在,关于RxJS Obserable<T>
,它几乎是一回事,通用T
是您将要使用的对象类型。当某些事情发生时,必须通知部分代码时,Observable主要用于控制异步事件监听。例如:当ajax请求结束时,单击某个元素或超时结束时。
let userObservable = new Observable<User> .....
userObservable.subscribe(user => {
console.log(user); // [User object], the user param will be typed to the Class User
});
您基本上订阅了一个可以使用T
类型对象的observable。
答案 1 :(得分:0)
这是TypeScript泛型。
当您订阅此observable时,您应该会收到一个&#34; ClassName&#34;对象。