Type Scriptのインデックス署名を徹底的に理解する
1722 ワード
索引署名の意味インデックス署名はtype scriptの文法糖 です.インデックスとは、一定の指向に従って対応する値 を返すものである.例えば配列のインデックスは下付き0,1,2...である. type scriptのインデックス署名には、デジタルインデックスと文字列インデックス の2種類があります.
数値インデックス:インタフェースを定義して配列に対する制約
数値インデックスの本質は配列インデックスの検索形式と一致していますが、定義形式が異なるだけです.
数値インデックスの配列に他のタイプが格納されている場合は、エラーが表示されます.
文字列索引:インタフェースを定義してオブジェクトに対する制約
ケース
配列内の各数値の出現回数を統計して印刷
デジタルインデックスによる実装
数値インデックス:インタフェースを定義して配列に対する制約
数値インデックスの本質は配列インデックスの検索形式と一致していますが、定義形式が異なるだけです.
数値インデックスの配列に他のタイプが格納されている場合は、エラーが表示されます.
// ,
var arr=[1,2,'3',{name:"looper"}]
console.log(" "+arr[0])
//
// : , number
interface numberIndex{
[index:number]:string
}
var numberTest: numberIndex=['1','2','3']//numberTest numberIndex, , string
console.log(' '+numberTest[0])
文字列索引:インタフェースを定義してオブジェクトに対する制約
// , key--->value,value
var obj={
name:"looper",
age:12
}
console.log(" "+obj.name)
//
// : , string
interface strIndex{
[index:string]:string
}
var strTest:strIndex={
name:"looper---> ",
age:"12------> ",
sex:" ------> "
}//strTest strIndex, , string
console.log(" "+strTest.name)
ケース
配列内の各数値の出現回数を統計して印刷
デジタルインデックスによる実装
let comControl: { [code: string]: number } ={}//
let srr=[1,2,3,3,4,2,1,3,1]
srr.forEach(x=>{
if(Object.keys(comControl).filter(y=>y==x.toString()).length<1){
comControl[x.toString()]=1
return
}
comControl[x.toString()]++
})
for (let i in comControl){//
console.log(i+" :"+comControl[i])
}
//1 :3
//2 :2
//3 :3
//4 :1