怎么理解这段ts语法?

type option = {
  [k: string]: string | object;
};

const typeMap: { [k: string]: string } = {
  tostring: "string",
  tonumber: "number",
};
特别是这个:[k: string]: string | object;
以及 const typeMap: { [k: string]: string }
这个 [k: string] 要怎么理解?

刚学ts,有点吃力,感觉语法太奇怪了。能不能帮我解释下这段代码的含义?感谢

阅读 3.8k
1 个回答

就是索引签名。

type Foo = {
    [key: string]: any;
}

意思就是虽然不知道 Foo 具体都有哪些字段,但知道一定可以通过一个 string 类型的 Key 去访问。那么 Foo 这个类型就被称为“可索引类型”,[key: string]: any 就是“索引签名”。

JS 里最常见的可索引类型就是数组 Array<T>,它有两个索引签名:[key: number]: T[key: string]: T,所以你才可以用 arr[0]arr['0'] 的方式去访问子元素。

TypeScript Documentation: Indexable types and index signatures
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题