所以现在,我正在尝试制作一个小型的模块化Web应用程序。我正在使用打字稿,这是我的新手。
在我的代码中,我:
定义接口的结构(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)不断给我TypeScript编译错误:
TS2304: Cannot find name
ProgramInfo`尽管我在前几行中明确定义了
ProgramInfo
。 最佳答案
当您这样做时:
let program = {
ProgramList: ProgramInfo[]
};
您使用属性
program
声明对象ProgramList
。但是,您尝试将接口数组分配给该属性,这没有任何意义。您可以这样做:let program: {ProgramList: ProgramInfo[]} = {
ProgramList: []
};
或像这样:
interface Program {
ProgramList: ProgramInfo[];
}
let program: Program = {
ProgramList: []
};