索引签名标识符有什么作用?
interface IIndex {
[something: string]: any;
}
有人会在哪里再次使用“某物”?
或者换句话说,为什么语法不只是:
interface IIndex {
[string]: any;
}
索引签名标识符有什么作用?
interface IIndex {
[something: string]: any;
}
有人会在哪里再次使用“某物”?
或者换句话说,为什么语法不只是:
interface IIndex {
[string]: any;
}
我的猜测是,这是出于一致性和接近 JavaScript 的原因。
就像命名方法参数很常见(即使在接口中),TS 中方法、构造函数、函数和索引器的所有参数都必须是格式name: type
或name
(含义name: any
)。(故事的简化版,但我相信你明白我的意思)
由于名称和类型在 TypeScript 中存在于不同的命名空间中,因此表单的参数string
将是模棱两可的。请记住,TypeScript 的使命是与 JavaScript 保持接近,因此将上述解释为 type 的参数string
是不可接受的,事实证明它确实等同于string: any
.
此外,虽然索引器可能是一个例外,因为它们只能是string
or类型number
,但情况并非总是如此(TS 0.8 allowed any
),因此另一个原因可能是便于迁移到 0.9。