【问题标题】:How do I tell TypeScript that the result from the subscribe function is an array of x?我如何告诉 TypeScript 订阅函数的结果是一个 x 数组?
【发布时间】:2019-03-31 02:42:59
【问题描述】:

在使用 noImplictAny 和带有 Angular 6 的 typescript 时,我在类型概念上遇到了问题。基本上编译器告诉我结果的类型是 Object,而我知道实际类型将是制造商类型的数组。我无法将结果分配给我的制造商数组,因为打字稿确定结果是 Object 类型(因为它没有方法签名,所以它是隐式的)。

当我无法控制结果的输入时,如何使用 noImplicitAny?还是我?

interface Manufacturer {
  key:string;
  i18nName: string;
}


  public manufacturers:Manufacturer[];
  public manufacturersCollapsed: collapse[] = [];


  constructor(private http: HttpService) {

  }

  private getManufacturers() {
    this.http.get('manufacturers.json').subscribe(result => {
      console.log(result);
      this.manufacturers = result;
    });
}

【问题讨论】:

  • 修复 get 方法以返回类型化结果

标签: typescript oop


【解决方案1】:

你也可以使用这个符号:

this.http.get<Manufacturer[]>('manufacturers.json').subscribe(result => {
  console.log(result);
  this.manufacturers = result;
});

【讨论】:

    【解决方案2】:

    你可以这样定义类型

    subscribe((result:Manufacturer[]) =>
    

    【讨论】:

    • 谢谢。键入概念对我来说仍然是新的,我试图做类似result&lt;Manufacturer[]&gt; 的事情,但显然这不是正确的语法。我会尽可能接受答案。
    猜你喜欢
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2019-04-11
    • 1970-01-01
    • 2020-01-06
    相关资源
    最近更新 更多