本文只是简单从语法层面描述 [] 的用法。
索引签名
作用:告诉TS实际属性比计划的更多一些。
注意:键的类型必须可以赋值给 number 或 string 。
let a: { b: number; c?: string; // 注意当key是string的时候,那么确定属性和可选属性的类型必须是它的属性的子集。 // eg:[key: string]: string | number; [key: number]: boolean; } a = { b: 1; c: 'hey'; 20: false; }
获取接口类型的联合类型
interface Person{ name: string; age: number; } // keyof Person => "name" | "age" type student = Person[keyof Person]; let stu1: student = 'tom';
遍历接口
interface Person{ name: string; age: number; } // in keyof Person => 遍历 name,string // per2 = { // name: string; // age: number; //} type per2 = { [P in keyof Person]: Person[P]; }; let a: per2 = { name: "tom", age: 12 };
数组
type per2 = { [P in keyof Person]: Person[P]; }[]; // per2 => Person[]; let c: per2 = [ { name: "tom", age: 12, }, ];
键入类型
键入类型可以理解为选择类型。
type per2 = { [P in keyof Person]: Person[P]; }[keyof Person]; // per2 => "string" | "name" let c: per2 = "tom";