类型"接口"?

时间:2017-04-20 14:29:53

标签: arrays angular typescript interface

我是Typescript的新手。我试图使用接口作为数组类型。我按顺序构造我的文字对象,但我仍然得到这个错误:

  

输入' {id:number;标题:字符串;图像:字符串;单词:string;   描述:字符串; } []'不能指定类型' IWordList []'。
  输入' {id:number;标题:字符串;图像:字符串;单词:string;   描述:字符串; }'不能分配到类型' IWordList'。       对象文字只能指定已知属性,并且' id'类型' IWordList'。

中不存在

请注意,案例不是关于' id'本身,但如果我添加任何添加属性,我会得到相同的错误

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 
  }
}

4 个答案:

答案 0 :(得分:0)

我刚把你的代码复制到一个Plunker中,它运行得很好。您可以在此处查看我的代码:https://plnkr.co/edit/sxcYl5v5jBlfzZ31fHLd?p=preview

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

啊......但是这个工具要求我粘贴代码......即使你已经上面了...所以这里是AppModule:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果有人偶然发现此错误,我最近通过webpack开发服务器和热模块重装获得了此错误。唯一可行的解​​决方案:

重新启动webpack开发服务器,以便从头开始编译

答案 3 :(得分:-2)

试试这个:

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

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