Only some types are allowed for index signature properties: string
, number
, symbol
, template string patterns, and union types consisting only of these.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 interface StringArray { [index : number ]: string ; } type IndexSign = { [key : number ]: string ; }; const foo7 : StringArray = { 1 : "foo" , 2 : "foo" , }; foo7[1 ] foo7[2 ]
In 可用类型别名,而不能用在 interface 上。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 type A1 = { [k in string ]: number } type A1 = { [k : string ]: number } interface A2 { [k : string ]: number } type A3 = Record <string , number > type A4 = { age : number ; }
如何声明一个对象或者数组
一般可以通过索引签名的方式
1 2 3 4 5 6 7 8 9 10 11 type A = { [k : string ]: number } type A2 = Record <string , number >type A3 = { name : string ; age : number ; }
如何描述数组?
一般通过三种方式描述数组
1 2 3 4 type A = string[]; type A = Array<string>; type A = [string, number]; // -- 精确描述