类型 'never[]' 缺少类型 'Observable<Customer[]>' 的以下属性

type 'never[]' is missing the following properties from type 'Observable<Customer[]>'

我想通过 get Http 调用从我的后端获取 customers 列表。但是我无法在我的 component.

中声明 array of customers

我有customer.interface.ts这样的

export interface Customer {
  _id?: string,
  name: string,
  email: string,
  phone?: string,
  address?: string,
  age?: number
}

我有http.service.ts

get = (url: string): Observable<any> => {
 return this.http.get(this.createUrl(url), { headers: this.getHeaders() });
} 

在我的customer.service.ts

getCustomers(): Observable<Customer[]>{
 return this._http.get(ApiConstants.getCustomers);
}

在我的customer.component.ts

customers$: Observable<Customer[]> = [];

ngOnInit(){
  this.customers$ = this.customerService.getCustomers();
}

现在它在编译时在编辑器中的这一行 customers$: Observable<Customer[]> = [] 给我一个错误。

Type 'never[]' is missing the following properties from type 'Observable<Customer[]>': isScalar, source, operator, lif and 5 more

这是怎么回事?

customers$ 的类型是 Observable,因此您不能为其分配空数组。所以你根本不需要定义它。这就足够了 ->

customers$!: Observable<Customer[]>;

如果 tsconfig.json 中的 "strictPropertyInitialization" 设置为 true,请添加此 !,否则可以省略它。当您不立即初始化 属性 时,需要此 !。您可以将 "strictPropertyInitialization" 设置为 false,然后省略 !。你可以看看

此外,当你需要从某些东西中创建一个 Observable 时,你可以使用 of RxJS 运算符将参数转换为可观察的序列。 https://rxjs.dev/api/index/function/of

一个补充是在 .get 之后添加转换,以便更清楚地了解类型。

getCustomers(): Observable<Customer[]> {
return this._http.get<Customer[]>(ApiConstants.getCustomers);
}

这个问题的回答可能会对您有所帮助