1
你好,我是Typesctipt和Angular2的新手。 我不明白爲什麼編譯器指出「wordListId」不存在:Typescript - 缺少屬性,但它已經存在
住宅「wordListId」類型上不存在「IWordList」。
和事件vs代碼自動完成顯示它存在。 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"
}
]
實現'OnInit'的服務?我不認爲這樣做。 –
但我不確定,如果這是原因,那麼JSON中的第二個對象確實缺少'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 –
不要在回調參數中指定類型是不安全的。 –