Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeScript接口未按预期工作_Javascript_Typescript - Fatal编程技术网

Javascript TypeScript接口未按预期工作

Javascript TypeScript接口未按预期工作,javascript,typescript,Javascript,Typescript,所以现在,我正在尝试制作一个小型的模块化web应用程序。我使用的是typescript,我对它很陌生 在我的代码中,我: 定义接口的结构(ProgramList) 我创建了一个对象,其属性(ProgramList)类型为ProgramInfo 我使用ProgramList界面用一个数组项定义ProgramList 这是我的密码: interface ProgramInfo { path:string; name:string; pkgname:string[];

所以现在,我正在尝试制作一个小型的模块化web应用程序。我使用的是typescript,我对它很陌生

在我的代码中,我:

  • 定义接口的结构(
    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)不断给我类型脚本编译错误:

  • TS2304:找不到名称
    ProgramInfo`
尽管我在前几行清楚地定义了
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: []
};

我该怎么做?我该怎么做?