如上图所示遇到个奇葩的问题使用 interface 定义映射报错,然而使用 type 同样的定义方式没有问题,使用的 typescript 版本是 "typescript": "^4.6.3"。这个是什么原因导致的呢,是哪里出现了问题呢?
如上图所示遇到个奇葩的问题使用 interface 定义映射报错,然而使用 type 同样的定义方式没有问题,使用的 typescript 版本是 "typescript": "^4.6.3"。这个是什么原因导致的呢,是哪里出现了问题呢?
从你给出的图片和描述来看,问题出在你尝试使用interface
来定义类型映射时遇到了错误。而当你改用type
定义时,问题就解决了。
在 TypeScript 中,interface
和type
都可以用来定义类型,但它们之间有一些重要的区别。
对于你的问题,如果你只是定义一个类型映射,并且没有需要描述对象的结构或行为,那么使用type
可能是更好的选择。而如果你需要描述一个对象的结构,那么应该使用interface
。
例如:
使用type
定义类型映射:
type MyTypeMap = {[key: string]: number};
使用interface
描述对象结构:
interface Person {
name: string;
age: number;
}
从你给出的错误信息来看,如果你只是定义一个类型映射,那么尝试使用interface
可能是不正确的。使用type
定义应该是正确的做法。如果你能提供更多的代码或上下文信息,我可能能更准确地分析问题所在。
因为
interface
不支持这种写法,索引签名 -index signature
的写法是[key: <string | number | symbol等等>]
.可以看看 index signature 中的说明.
所以你的那个写法还可以改成这样: