Javascript Typescript中的可索引类型和数组有什么区别
我正在学习Typescript,并且我已经达到了可索引类型的程度,在这里我给出了如下示例:Javascript Typescript中的可索引类型和数组有什么区别,javascript,angular,typescript,Javascript,Angular,Typescript,我正在学习Typescript,并且我已经达到了可索引类型的程度,在这里我给出了如下示例: interface StringArray { [index: number]: string; } let myArray: StringArray; myArray = ["Bob", "Fred"]; let myStr: string = myArray[0]; 出局者是:鲍勃 我们可以将类型数组声明为: let myArray:string[]; myArray = ["Bob","
interface StringArray {
[index: number]: string;
}
let myArray: StringArray;
myArray = ["Bob", "Fred"];
let myStr: string = myArray[0];
出局者是:鲍勃
我们可以将类型数组声明为:
let myArray:string[];
myArray = ["Bob","Fred"];
console.log(myArray[0]);
出局者是:鲍勃
所以我的问题是这两种方法的区别是什么?我们在哪里可以使用这样的可索引类型而不是数组呢?JavaScript中的任何对象都是可索引的,区别在于您还得到了什么
StringArray
接口定义了任何可由number
索引的对象,并且所有值均为string类型。当然,这可以是数组,但也可以是满足此约束的任何其他对象。例:
interface StringArray {
[index: number]: string;
}
let o : StringArray = {
0: "A", //ok
// "V" : "B" // error
// 1: 0 error
}
let arr : Array<string> = o; // Error
console.log(o instanceof Array) // false
接口字符串数组{
[索引:编号]:字符串;
}
设o:StringArray={
0:“A”//ok
//“V”:“B”//错误
//1:0错误
}
设arr:Array=o;//错误
console.log(o instanceof Array)//false
o
满足StringArray
,但不是真正的数组
,因为它没有数组的所有方法(因此分配给arr
失败),即使它有,也不是使用数组文字语法创建的([]
)或者新建数组
,因此它不是数组的实例
(因此o数组的实例
返回false)
另一方面,
string[]
(相当于Array
)为真正的JavaScript数组建模。@KiranShahi抱歉,这不是重复,这解释了定义数组的两个语法之间的差异,这是可索引类型和array@TitianCernicova-德拉戈米尔:)