2017-10-02 15 views
2

私のコードは次のようになります。矢印関数の引数をインタフェースとしてキャストできませんか?

myObservable$.subscribe(data => { 
    data = data as ImyInterface; 
    data. // <-- VS Code IDE didn't autocomplete 
}); 

このアプローチが失敗した理由:

interface ImyInterface { 
    v: number; 
} 

class A implements OnInit { 
    ngOnInit() { 
     let myObservable$ = getObs(); 
     myObservable$.subscribe(data => { 
      const foo = data as ImyInterface; 
      foo. // <-- VS Code IDE autcompletes with 'v' 
     }); 
    } 
}; 

はしかし、私は余分な変数を宣言すると、小さなオーバーヘッドであるので、私はこの代わりに、洞をしようとしたことを考えましたか?私はそれが可変スコープ、そしておそらくシャドウイングと関係していると思っていますか?私は初心者なので、私は知らない。

答えて

2

あなたはそのようにやってみてください:あなたの上のコードを使用して

myObservable$.subscribe((data: ImyInterface) => { 
    alert(data.v); 
}); 

はあなたのImyInterfaceインタフェースを実装している引数を期待する機能をサブスクライブすることを宣言しています。

+0

良いです。しかし、なぜ私のアプローチは失敗しましたか?アップフォート=ありがとう) – gsamaras

関連する問題