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"
}
]
'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 –
그런 콜백 매개 변수 유형을 지정하지 마십시오. 안전하지 않습니다. –