使用 <ClassName[]> 语法
Use of <ClassName[]> syntax
我目前正在使用 Ionic 2 开发一个基本的聊天应用程序,并且遇到过几次这种语法:
private someFunction(): Observable<ClassName[]> {
我一直想了解 <ClassName[]>
在做什么,但我不确定这是否是 Ionic 2、Angular 2 或 Typescript 特有的东西。
我已经搜索了每个文件的文档,但尚未找到对此的任何参考。
正如评论中所说,它是一个 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
是您将使用的对象类型。 Observables 主要用于控制异步事件监听,当某些事情发生时必须通知您的部分代码。例如:当 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
.
类型的对象一起使用的可观察对象
这是 TypeScript 泛型。
当您订阅这个可观察对象时,您应该会收到一个包含 "ClassName" 个对象的数组。
我目前正在使用 Ionic 2 开发一个基本的聊天应用程序,并且遇到过几次这种语法:
private someFunction(): Observable<ClassName[]> {
我一直想了解 <ClassName[]>
在做什么,但我不确定这是否是 Ionic 2、Angular 2 或 Typescript 特有的东西。
我已经搜索了每个文件的文档,但尚未找到对此的任何参考。
正如评论中所说,它是一个 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
是您将使用的对象类型。 Observables 主要用于控制异步事件监听,当某些事情发生时必须通知您的部分代码。例如:当 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
.
这是 TypeScript 泛型。
当您订阅这个可观察对象时,您应该会收到一个包含 "ClassName" 个对象的数组。