首页 > 解决方案 > 在多次出现时使用相同的类型

问题描述

使用 TypeScript 和 Angular,我创建了以下对 HTTP observable 的订阅:

this.movie.getByKeywordIDChrono().subscribe((data: {
  page: number,
  results: object[],
  total_pages: number,
  total_results: number
}) => {

  if (data.total_pages > 1) {
    for (let i = 2; i <= data.total_pages; i++) {
      this.movie.getByKeywordIDChronoNextPage(i).subscribe((data: {
        page: number,
        results: object[],
        total_pages: number,
        total_results: number
      }) => {
        ...
      })
    }
  }

})

两个订阅都具有相同的data对象类型。

如何在两个实例中使用为 data 参数创建的类型?

标签: typescript

解决方案


使用接口或类型别名:

type MyData =  { // type alias
  page: number,
  results: object[],
  total_pages: number,
  total_results: number
}

this.movie.getByKeywordIDChrono().subscribe((data: MyData) => {

  if (data.total_pages > 1) {
    for (let i = 2; i <= data.total_pages; i++) {
      this.movie.getByKeywordIDChronoNextPage(i).subscribe((data: MyData) => {
        ...
      })
    }
  }

})

或者类似的接口:

interface MyData  { 
  page: number,
  results: object[],
  total_pages: number,
  total_results: number
}

推荐阅读