Javascript TypeScript接口未按预期工作
所以现在,我正在尝试制作一个小型的模块化web应用程序。我使用的是typescript,我对它很陌生 在我的代码中,我:Javascript TypeScript接口未按预期工作,javascript,typescript,Javascript,Typescript,所以现在,我正在尝试制作一个小型的模块化web应用程序。我使用的是typescript,我对它很陌生 在我的代码中,我: 定义接口的结构(ProgramList) 我创建了一个对象,其属性(ProgramList)类型为ProgramInfo 我使用ProgramList界面用一个数组项定义ProgramList 这是我的密码: interface ProgramInfo { path:string; name:string; pkgname:string[];
- 定义接口的结构(
)ProgramList
- 我创建了一个对象,其属性(
)类型为ProgramList
ProgramInfo
- 我使用
界面用一个数组项定义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)不断给我类型脚本编译错误:
ProgramInfo`TS2304:找不到名称
ProgramInfo
let program = {
ProgramList: ProgramInfo[]
};
您在这里使用的是对象文字!这意味着双冒号:
并不意味着ProgramList
属于ProgramInfo[]
类型,而是意味着将program.ProgramList
赋值给变量ProgramInfo
,当然变量不存在
您应该做的是为ProgramList
字段分配一个空数组
let program = {
ProgramList: []
};
如果您想要更多的类型安全性,当然可以添加一个描述程序
对象的接口
interface Program{
ProgramList: ProgramInfo[];
}
您在这里使用的是对象文字!这意味着双冒号:
并不意味着ProgramList
属于ProgramInfo[]
类型,而是意味着将program.ProgramList
赋值给变量ProgramInfo
,当然变量不存在
您应该做的是为ProgramList
字段分配一个空数组
let program = {
ProgramList: []
};
如果您想要更多的类型安全性,当然可以添加一个描述程序
对象的接口
interface Program{
ProgramList: ProgramInfo[];
}
当您这样做时:
let program = {
ProgramList: ProgramInfo[]
};
使用属性ProgramList
声明对象program
。但您试图将接口数组分配给此属性,这是没有意义的。您可以这样做:
let program: {ProgramList: ProgramInfo[]} = {
ProgramList: []
};
interface Program {
ProgramList: ProgramInfo[];
}
let program: Program = {
ProgramList: []
};
或者像这样:
let program: {ProgramList: ProgramInfo[]} = {
ProgramList: []
};
interface Program {
ProgramList: ProgramInfo[];
}
let program: Program = {
ProgramList: []
};
当您这样做时:
let program = {
ProgramList: ProgramInfo[]
};
使用属性ProgramList
声明对象program
。但您试图将接口数组分配给此属性,这是没有意义的。您可以这样做:
let program: {ProgramList: ProgramInfo[]} = {
ProgramList: []
};
interface Program {
ProgramList: ProgramInfo[];
}
let program: Program = {
ProgramList: []
};
或者像这样:
let program: {ProgramList: ProgramInfo[]} = {
ProgramList: []
};
interface Program {
ProgramList: ProgramInfo[];
}
let program: Program = {
ProgramList: []
};
应该是:
interface Program {
ProgramList: ProgramInfo[]
}
let program: Program = {
ProgramList: []
};
应该是:
interface Program {
ProgramList: ProgramInfo[]
}
let program: Program = {
ProgramList: []
};
我该怎么做?我该怎么做?