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