Skip to content

索引签名

索引签名的思想是在只知道键和值类型的情况下对结构未知的对象进行类型划分。

1.对象

比如说,对象的键最终都是字符串的形式,我们可以这样定义

ts
interface Obj {
     // 对象的键的类型都是string
	 [key: string]: number
}

const obj: Obj = {a:1,b:2}

key为自定义的名称

假如掉接口传参时,有些是必传字段,有些是可选,可以像如下这样定义

ts
interface Iobj {
    a: number,
    b: number,
    // 描述对象剩余的键都是字符串
    // 描述对象剩余的类型都是任意类型
    [key: string]: any
}

const obj: Iobj = {
    // 键和值
    // 键值对
    // 索引和值
    a: 1,
    b: 2,
    c: 'sadda',
    d: 'fasdfsdf',
    // ..
}

2.数组

数组的下标都是number类型

ts
interface Iarr {
    [index:number]: number
}
const arr: Iarr = [111,222,33]


// 使用泛型
interface Arr<T> {
	 [insert: number]: T
}
const arr: Arr<string> = ['a', 'b']

MIT Licensed