tyescript 中使用 interface 做类型映射报错而换成 type 定义就可以了?-灵析社区

无敌英俊大师兄

![1704200427581.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241016/3aa2516344941f970013777707b1d79d.png) 如上图所示遇到个奇葩的问题使用 interface 定义映射报错,然而使用 type 同样的定义方式没有问题,使用的 typescript 版本是 "typescript": "^4.6.3"。这个是什么原因导致的呢,是哪里出现了问题呢?

阅读量:14

点赞量:0

问AI
因为 "interface" 不支持这种写法,索引签名 - "index signature" 的写法是 "[key: ]". 可以看看 "index signature" (https://link.segmentfault.com/?enc=wM92BfDzEs%2Bh7zbLR2dgRw%3D%3D.GWtcYo%2FrcjEN0PC7h0lq42l%2BXx3eKsf6iKg3nwpFoC%2Bzi0%2BntuQTjteWk7woMX5kyszaiZdkw%2Bin1Iaqnx9YeonERzD43OE%2Fhtg5o7qA1EY%3D) 中的说明. 所以你的那个写法还可以改成这样: interface ActionType { [key: string]: typeof INITIAL_STATE[keyof typeof INITIAL_STATE] } let demo: ActionType = { name: [1, 2, 3], age: 20, gender: ["male", "female"], }; console.log(demo); /** * { name: [ 1, 2, 3 ], age: 20, gender: [ 'male', 'female' ] } */