Typescript语法结构“[x:string]:T`解释
我最近在typescript项目中遇到了以下语法:Typescript语法结构“[x:string]:T`解释,typescript,syntax,Typescript,Syntax,我最近在typescript项目中遇到了以下语法: export interface EntriesToProperties<T> { [entryFileName: string]: T } export interface EntriesProperties { test: testEntryProperties } entryProperties: EntriesToProperties<EntriesProperties>; 导出接口属性{
export interface EntriesToProperties<T> {
[entryFileName: string]: T
}
export interface EntriesProperties {
test: testEntryProperties
}
entryProperties: EntriesToProperties<EntriesProperties>;
导出接口属性{
[entryFileName:string]:T
}
导出接口属性{
测试:测试属性
}
入口属性:入口属性;
我有点不明白这里发生了什么
最令人困惑的是:
export interface EntriesToProperties<T> {
[entryFileName: string]: T
}
导出接口属性{
[entryFileName:string]:T
}
我知道
是一种泛型类型,后来被
取代,但它如何应用于[entryFileName:string]:T
以及[entryFileName:string]:T
这里到底是什么
这是一种解构语法吗?如果是,为什么有类型注释变量名entryFileName:string
?如果声明后面没有赋值,以后如何使用它
它是数组文字吗?因此,这将是一个字符串数组,一个
EntriesProperty
元素数组,还是将
替换为
后的TestEntryProperty
元素数组?如果不是字符串数组-字符串类型注释在其中起什么作用?多亏了Mike S.lead,我找到了包含更详细答案的文章
此构造[entryFileName:string]:T
是对象的特殊“索引签名”语法。它用于定义它可以存储的对象类型,因此它意味着
interface EntriesToProperties<T> {
[entryFileName: string]: T
}
接口属性{
[entryFileName:string]:T
}
是一个对象,它只能存储类型为
的对象,这些对象已编制索引,并且可以通过entryFileName:string
访问aso。它有效地创建了类型安全的类似映射的对象,与内置的映射和记录相比,该对象具有一些额外的特性
更多信息:
只需将索引键放在对象条目上,其名称可以是任何内容,通常只是
键
或名称
。在TypeScript手册中有关接口的章节中,也请参见。