TypeScript学习(十)索引签名
总结
索引签名在实际开发中经常用到,例如服务端接口返回了很多数据但是存在我们不需要用的,如果定义接口的时候不定义它们会报错,这时我们使用索引签名,就可以避免这个问题
注意:TypeScript 的索引签名必须是 string 或者 number。索引签名的名称(如:{ [index: string]: { message: string } } 里的 index )除了可读性外,并没有任何意义。例如:如果有一个用户名,你可以使用 { username: string}: { message: string },这有利于下一个开发者理解你的代码。当你声明一个索引签名时,所有明确的成员都必须符合索引签名:
// 例1 // ok interface Foo { [key: string]: number; x: number; y: number; } // Error interface Bar { [key: string]: number; x: number; y: string; // Error: y 属性必须为 number 类型 } // 例2 const foo: { [index: string]: { message: string }; } = {}; // 储存的东西必须符合结构 // ok foo['a'] = { message: 'some message' }; // Error, 必须包含 `message` foo['a'] = { messages: 'some message' }; // 读取时,也会有类型检查 // ok foo['a'].message; // Error: messages 不存在 foo['a'].messages;