怎么理解这段ts语法?

发布于 2022-09-30 23:06:49 字数 339 浏览 24 评论 0

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,有点吃力,感觉语法太奇怪了。能不能帮我解释下这段代码的含义?感谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

2022-10-07 23:06:49

就是索引签名。

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文