Typescript:多括号字段声明

Typescript:多括号字段声明,typescript,Typescript,我在一个项目中发现了以下表达式: export class MyComponent implements OnInit { public field: { [key: number] : string } = something ... } 我不知道这是什么意思。谁能解释一下并给我一个参考,这样我就可以学习这种类型的声明了吗 { [key: number] : string } 是匿名/内联类型声明,转换为: interface Anon { [key: number

我在一个项目中发现了以下表达式:

export class MyComponent implements OnInit {
    public field: { [key: number] : string } = something
    ...
}
我不知道这是什么意思。谁能解释一下并给我一个参考,这样我就可以学习这种类型的声明了吗

{ [key: number] : string }
是匿名/内联类型声明,转换为:

interface Anon {
    [key: number]: string;
}
括号声明,该对象中任何未声明的附加属性的类型必须是
number
类型,并且该类型的值必须是
字符串

{ 1: "foo", 2: "bar" } // valid
{ "1": "foo", "2": "bar" } // invalid

是匿名/内联类型声明,转换为:

interface Anon {
    [key: number]: string;
}
括号声明,该对象中任何未声明的附加属性的类型必须为
number
类型,并且该类型的值必须是
string

{ 1: "foo", 2: "bar" } // valid
{ "1": "foo", "2": "bar" } // invalid

字段
是一种对象类型(因为
{}
),具有返回字符串的数字索引签名。这意味着分配给字段的对象只能有数字键,并且对象中的值必须是
string

let field: { [key: number]: string };

field = {
    0: "A",
    //"A": "A", // error key is not numeric
    //0: 0, // error value is not a string
} 

let a = field[0] //a is string

field = ["A", "B"] // arrays are valid as well

您可以阅读更多有关它的信息

字段
是一种对象类型(因为
{}
),具有返回字符串的数字索引签名。这意味着分配给字段的对象只能有数字键,并且对象中的值必须是
string

let field: { [key: number]: string };

field = {
    0: "A",
    //"A": "A", // error key is not numeric
    //0: 0, // error value is not a string
} 

let a = field[0] //a is string

field = ["A", "B"] // arrays are valid as well

您可以阅读更多有关它的信息

@MateutAlin是的,我的坏,修复:)@MateutAlin不,它只是索引参数的名称,可以是您想要的任何名称,
key
name
是常见的选择,但任何名称都可以do@MateutAlin是的,我的坏,修复:)@MateutAlin不,它只是索引参数的名称,它可以是您想要的任何名称,
key
name
是常见的选择,但任何名称都可以