我是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
}
}
答案 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;
}
?
运算符允许您将选项设为可选。