2017-05-02 1 views
0

각도 2를 사용하고 있으며 객체 컬렉션을 반환하기 위해 끝점을 호출하려고합니다.Observable Map이 typescript 클래스로 캐스팅되지 않습니다.

나는 다음과 같은 JSON

[{"id":610,"branch":"Coventry"},{"id":620,"branch":"Shoreham"}] 

나는 다음과 같은 코드

를 사용하여 엔드 포인트를 호출하는 노선 서비스가 반환하는 API 엔드 포인트를

export class Route 
{ 
    public branchId: number; 
    public branch: string; 
    public isTest: boolean = true; 
} 

다음 TypesScript 클래스를 가지고

public getRoutes(): Observable<Route[]> 
{ 
    const url = 'http://localhost/routes'; 

    return this.http.get(url) 
     .map((response: Response) => 
     { 
      const routes: Route[] = response.json() as Route[]; 
      if (routes.length > 0) { 
       console.log(routes[0].isTest); 
       //This returns undefined I was expecting the boolean value true 
      } 
      return routes; 

     } 
     ) 
     .catch(e => this.httpErrorService.handleError(e)); 
} 

response.json()이 데이터 유형 R로 형변환되지 않는 것처럼 보입니다. 외출. 왜 이런거야?

답변

2

TypeScript에서와 같이 엄격한 캐스트를 수행 할 수 없으며 개체가 해당 유형이 될 수 없습니다. 캐스트는 나머지 코드에 Route 배열로 작업 중임을 알리는 단순한 변환기입니다. JSON 데이터 세트의 모든 속성을 가지고 않습니다

const routes: Route[] = (response.json() as []).map((obj) => { 
    return Object.assign(new Route(), obj); 
}) as Route[]; 

경우 필요가 없습니다 : 진정으로 JSON 데이터는 단지 Object 당신과 같이 직접 입력하기 assign 방법을 사용할 수 있습니다 유형 Route의 수와하지에 도착 그 때 입력 된 객체로 작업하는 것처럼 작동해야하는 인터페이스에 대해 개발 중이므로 assign 메소드를 사용하십시오.

+0

트릭을 한 Teddy에게 감사드립니다. –

관련 문제