TypeScript接口定义类型错误

TypeScript接口定义类型错误,typescript,Typescript,我在typescript中的以下定义中出错,我可以知道是什么问题吗 interface Dictionary { [index: string]: string; length: number; } 请参阅上的TypeScript文档。所有属性必须具有相同的返回类型,因此不能在接口上使用返回类型编号声明长度 要获取数组的长度,可以将其转换回常规数组类型: (<Array<any>>yourArray).length (yourArray).长度 在您的字典界

我在typescript中的以下定义中出错,我可以知道是什么问题吗

interface Dictionary {
[index: string]: string;
length: number; 
}

请参阅上的TypeScript文档。所有属性必须具有相同的返回类型,因此不能在接口上使用返回类型编号声明长度

要获取数组的长度,可以将其转换回常规数组类型:

    (<Array<any>>yourArray).length
(yourArray).长度

在您的
字典
界面中

[index: string]: string;
被称为字符串索引签名,并告诉编译器
字典
的所有属性必须是
字符串
类型。您通常会使用索引签名来避免使用混合类型的数组

那么这样做就可以了:

let d: Dictionary;
d["foo"] = "bar";
interface Dictionary {
    [index: string]: string;
    foo: string;
}
但这将导致编译器错误:

let d: Dictionary;
d["foo"] = 1000;
您可以为
字典
定义属性,只要您定义的每个属性的类型都是
字符串
。例如,这是确定的:

let d: Dictionary;
d["foo"] = "bar";
interface Dictionary {
    [index: string]: string;
    foo: string;
}
并允许您执行以下操作:

let d: Dictionary;
d.foo = "bar";

但是在您的例子中,您尝试将名为
length
的属性定义为
number
,之前您已经告诉编译器所有属性都将是
string
类型。这就是为什么会出现编译器错误。

您读到错误了吗?