作者回复: 给你点赞
作者回复: interface Names {
[x: string]: string;
}
let names: Names = {
xiaoming: "",
xiaohong: ""
}
作者回复: 这个问题比较奇怪,好像数组中有一个元素符合List定义就通过了检查。原因暂时未知。
两个解决方案:
1)用字符串索引签名
2)最后一行 as unknown as Result
作者回复: 这是正常的,这些代码都是代码片段,为了演示方便,没有考虑重名问题。如果要一起运行,你可以把它们都定义成模块,或者修改一下变量名。
作者回复: 你可以按住ctrl,点击PromiseLike看它的定义,它是给resolve或reject添加回调的函数,返回一个Promise
作者回复: Names是字符串索引类型,不能赋值为数组(数字索引),赋值一个对象就行了。
作者回复: 这个目录里的代码都是独立的代码片段,要运行其中一个文件,就把内容copy到index.ts,或导入进来。
作者回复: interface Names {
[x: string]: any
}
let names: Names
字符串索引签名有两层含义:
1)names 可以有任意多个属性
2)names 可以用字符串索引,既 names['xxx'],或 names.xxx(也可以用数字索引,names[number],数字会被转换成字符串)
如:
names = {
0: 0,
a: 'a'
}
注意,并不涉及任何字符串匹配问题。