问rxjs对Obsevable distinct的使用

Ask about rxjs' use of Obsevable distinct

我想知道如何使用 Observable。 我想做的是重复删除。下面的样例1可以动,但是我想做的不是这种格式,而是提前准备数组的时候怎么煮。

orgLayerDistinct(allList: LabelMasterExt[]) {
// Observable.of( allList ).distinct( );

// [sample 1] このサンプルは動くが好みの形式ではない。
// [sample 1] This sample works, but it's not a form of favorite.
Observable.of<Person>(
{ age: 4, name: 'Foo'},
{ age: 7, name: 'Bar'},
{ age: 5, name: 'Foo'},
{ age: 6, name: 'Foo'})
.distinct((p: Person) => p.name)
.subscribe(x => console.log(x));

// [sample 2 experimental] 配列を用意してある前提で利用したい。
// [sample 2 experimental] I would like to use an array on the assumption that it is prepared.
const persons: Person[] = [];
persons.push({ age: 4, name: 'Foo'});
persons.push({ age: 7, name: 'Bar'});
persons.push({ age: 5, name: 'Foo'});
persons.push({ age: 6, name: 'Foo'});
Observable.of<Person[]>(persons)
.distinct((p: Person) => p.name)
.subscribe(x => console.log(x));

}

[样本 2 实验] 但是,这会出现以下错误。

The type argument for type parameter 'T' cannot be inferred from the usage.
Consider specifying the type arguments explicitly.
Type argument candidate 'Person[]' is not a valid type argument
because it is not a supertype of candidate 'Person'.
Property 'includes' is missing in type 'Person'.

有什么好的方案吗?

您可以使用 Observable.from<Person>(array)Observable.of<Person>(...array)

您的第二个示例存在的问题是 Observable.of<Person[]>()s 元素是 Person 的数组,但 .distinct() 需要 Person 类型的输入。