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