TypeScript接口没有像我预期的那样工作
TypeScript Interface not working as I expected
所以现在,我正在尝试制作一个小型模块化web应用程序。我正在使用打字稿,这是我很陌生的。
在我的代码中,I:
- 定义接口的结构(
ProgramList
( - 我创建了一个具有
ProgramInfo
类型的一个属性(ProgramList
(的对象 - 我使用
ProgramList
接口用一个数组项定义ProgramList
这是我的代码:
interface ProgramInfo {
path:string;
name:string;
pkgname:string[];
start?:string[];
cli?:string[];
}
let program = {
ProgramList: ProgramInfo[]
};
program.ProgramList = [
{
path: "/default_programs/WOSPMan",
name: "WOSPMan (WebOS Package Manager)",
pkgname: ["com", "webos", "wospman"],
start: ["wospman", "wospm"],
cli: ["wospman"]
}
];
我的IDE(JetBrains WebStorm(,不断给我TypeScript编译错误:
TS2304: Cannot find name
程序信息`
尽管我在最初几行上明确定义了CCD_ 7。
当你这样做时:
let program = {
ProgramList: ProgramInfo[]
};
您使用属性ProgramList
声明对象program
。但您试图将接口数组分配给这个属性,这是没有意义的。你可以这样做:
let program: {ProgramList: ProgramInfo[]} = {
ProgramList: []
};
或者像这样:
interface Program {
ProgramList: ProgramInfo[];
}
let program: Program = {
ProgramList: []
};
let program = {
ProgramList: ProgramInfo[]
};
您在这里使用的是对象文字!这意味着双冒号:
并不意味着ProgramList
属于ProgramInfo[]
类型,而是意味着将program.ProgramList
分配给变量ProgramInfo
,当然这并不存在。
您应该做的是为ProgramList
字段分配一个空数组。
let program = {
ProgramList: []
};
如果您正在寻找更多的类型安全性,您当然可以添加一个描述program
对象的接口。
interface Program{
ProgramList: ProgramInfo[];
}
应该是:
interface Program {
ProgramList: ProgramInfo[]
}
let program: Program = {
ProgramList: []
};
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 外部接口在Flash Actionscript 2工作在一个网站,但不是另一个
- 接口如何在JavaScript中工作
- javascript接口不能在Android 5上工作
- Android - JavaScript接口在Android 3.0中不工作
- TypeScript接口没有像我预期的那样工作