所以现在,我正在尝试制作一个小型的模块化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: []
};

10-06 08:06