質問: new Bar(new Foo) alert(bar.map(a => a.x).a) // 1 ``` ここまではいいんですが、 ``` alert(bar.map(a => a.fugaaaaaa).a) // undefined ``` 本当はAってFooなので、持ってないfugaaaaの参照でコンパイルエラーになってほしいんですが...。 fで受け取ったAがanyになってしまいます... 何か対応策ありますでしょうか。
回答: 1. まずはコンパイラオプションで`noImplicitAny`を有効にしてみてください。 2. すると`map()`メソッドの引数に渡す、アロー関数の引数`A`がエラーになります。 * これは本来型パラメータ`A`を渡す意図かと思いますが、この表記では`A`という名前のただの`any`型の引数となってしまいます 3. `map()`メソッドを以下のように書き換えてみてください。 ``` map(f: (param:A) => B):Bar{ return new Bar(f(this.a)) } ``` 4. すると期待するような以下のエラーが吐かれるようになるかとおもいます(tsc 1.6.2で確認済)。 `error TS2339: Property 'fugaaaaaa' does not exist on type 'Foo'.`