2017-04-20 113 views
0

我是新手稿。我正在尝试使用接口作为数组类型。我按顺序构造我的字面对象,尽管我仍然得到这个错误:“接口”类型中不存在属性?

类型'{id:number; title:string; image:string;词:字符串; description:string; } []'不可分配为键入'IWordList []'。
类型'{id:number; title:string; image:string;词:字符串; description:string; }'不可分配为键入'IWordList'。 对象字面量只能指定已知的属性,'IWordList'类型中不存在'id'。

注意的情况是不是 '身份证' 本身,而是它是,如果我添加任何addtioal财产,我得到了同样的错误

IWordList.ts

export interface IWordList{ 
    id : number; 
    title : string; 
    image : string; 
    words : string; 
    description : string; 
} 

wordlistsdata.service.ts

import { Injectable } from '@angular/core'; 
import { IWordList } from './IWordlist'; 

@Injectable() 
export class WordlistsdataService { 

    constructor() { } 

    private allWordLists : IWordList[] = 
    [ 
     { 
      id : 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" 
     } 

    ] 

    public getWordList() : IWordList[]{ 
    return this.allWordLists; 
    } 

    public getOneWordList(id : number) : string[] { 
    return 
    } 
} 
+0

组件代码如何看起来像使用这些数据? – Alex

+0

我无法在[playground](https://www.typescriptlang.org/play/)中重现你的错误,对吗?你使用什么版本的打字稿? –

回答

0

尝试这样的:

export interface IWordList{ 
    id ?: number; 
    title : string; 
    image : string; 
    words : string; 
    description : string; 
} 

?运算符允许您将事物设置为可选项。

+0

它没有工作。 –

0

我刚刚将你的代码复制到Plunker,它工作得很好。你可以在这里看到我的代码:https://plnkr.co/edit/sxcYl5v5jBlfzZ31fHLd?p=preview

看看你是否可以从那里运行它。

啊......但是这个工具要求我将代码粘贴...即使你拥有它上面......所以这里是中的AppModule:

@NgModule({ 
    imports: [ BrowserModule ], 
    declarations: [ App ], 
    providers: [ WordlistsdataService ], 
    bootstrap: [ App ] 
}) 
export class AppModule {} 
+0

谢谢,我这次更改了我的代码。相反,我会从本地json文件读取数据。顺便说一句,我喜欢Pluarsight的“Angular 2:入门”课程。你是惊人的作家。继续发布Angular 2课程;我爱你的教学方式。 –

+0

非常感谢! – DeborahK

+0

请看看这个问题(http://stackoverflow.com/questions/43567722/typescript-angular2-rxjs-missing-property-but-its-already-exist)我试图创建一个类似组件的产品 - 详细信息来自课程。但是我的服务正面临一个问题。提前致谢。 –

0

我有同样的错误。它出现在我的构建手表中,但不在Linter中,它可以检测到这些错误。所以我决定重新开始构建,并得到一个新的错误,指向一个案例,我创建了一个没有引发错误的属性的对象(在你的情况下是“id”)。有趣的是,Linter错过了这个实际的错误。我修复了这段代码,以便“id”被定义,并再次开始构建。这次它没有错误。

相关问题