你能解释一下这个Typescript片段吗?
interface Validator<T extends Control> {
(c:T): {[error: string]:any};
}
所以它是一个扩展Control的接口,它有一个函数(方法)接受与传递给Validator(T)相同类型的类(泛型),并且该方法返回一个对象的类型......? ?现在那部分我很困惑:
{[error: string]:any};
这是一种对象?任何?不确定?!
TX
肖恩
答案 0 :(得分:2)
{
[error: string]:any;
}
这称为索引签名。它表示当对象被字符串索引时,例如foo["something"]
,结果类型为any
,并且该类型的所有声明的属性可分配给any
(尽管这并不意味着任何特定的内容)因为所有内容都可以分配给any
)。
答案 1 :(得分:2)
<div class="canvas-wrapper">
<canvas id="canvas"></canvas>
</div>
是一个带有一个类型参数Validator
的接口。 T
扩展T
,因此Control
提供的内容必须延伸T
。 (见the language spec for more on this。)
实现Control
接口的对象是可调用的(它们是一个函数)。调用时,Validator
对象需要一个Validator
类型的参数并返回一个对象。可以使用可以映射到任何类型的值的字符串将此对象编入索引。 T
表示法称为an index signature,为explained in prose here。它本质上只是意味着您可以使用括号而不是点符号来访问对象。
因此,示例用法可能类似于:
[error: string]:any