2017-04-23 19 views
1

こんにちは、私はTypesctiptとAngular2を初めて使用しています。コンパイラは「wordListId」は存在しないことを知らせるいる理由 私は理解していない:Typescript - プロパティがありませんが、すでに存在しています

プロパティ「wordListId」タイプに存在しません「IWordList」。

とイベント対コード自動補完が存在することを示します。 Image

WordlistsdataService.ts

import { Injectable, OnInit } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 
import { Observable } from 'rxjs/Observable'; 
import { IWordList } from './IWordlist'; 
import 'rxjs/add/operator/map'; 

@Injectable() 
export class WordlistsdataService implements OnInit { 

    private url :string = 'src/app/wordlists/wordlists.json'; 
    constructor(private http : Http) { } 

    getWordLists() : Observable<IWordList[]> { 
    return this.http.get(this.url) 
        .map((response : Response) => <IWordList[]>response.json()) 
    } 

    getWordList(id : number) : Observable<IWordList>{ 
    return this.getWordLists().map((wordLists : IWordList[]) => wordLists.find(p => p.wordListId === id)); 
    } 

    ngOnInit(){ 
    } 

} 

IWordList.ts(インターフェース)

export interface IWordList{ 
    wordListId : number, 
    title : string, 
    image : string, 
    words : string, 
    description : string, 
} 

wordlists.json

[ 
    { 
      "wordListId" : 1, 
      "title" : "Animals", 
      "image" : "/src/app/images/wordlists/animals_background.jpg", 
      "words" : "cat,elephant,cow,duck", 
      "description" : "sdadasd" 
     }, 
     { 
      "id" : 2, 
      "title" : "Jobs", 
      "image" : "/src/app/images/wordlists/jobs_background.jpg", 
      "words" : "engineer,farmer,artist,programmer", 
      "description" : "sdadasd" 
     } 
] 
+0

'OnInit'を実装しているサービスはありますか?私は何もしないと思う。 –

+0

これが原因であるかどうかわかりませんが、JSONの2番目のオブジェクトには本当に 'wordListId'というプロパティがありません。また、 '.map((wordLists:IWordList [])=> wordLists.find(p => p.wordListId === id))'をチェックしてください。 'map'コールバックの最初の引数は配列全体の配列ではなく、配列の現在の値でなければなりません。これについては、参考までにチェックしてください:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map?v=example –

+0

そのようなコールバックパラメータで型を指定しないでください安全ではありません。 –

答えて

0

私はこのエラーがWebPACKのから誤解されると信じています。最初のエラーを処理してから、再コンパイルしてエラーを取り除いてください。あなたの与えられたコードに間違ったことはありません。

関連する問題