export default {} /* - 定义: 索引签名用于描述那些“通过索引得到”的类型 - 格式: 如`[props: string]:any` - 应用场景: 解决参数问题 */ interface IFullName { firstName: string lastName: string age: number singName: string [props: string]: any } // 注意点: 我们一旦定义好接口,就确定了变量或者形参,我们使用接口进行约束的时候,就必须一模一样 // 少一个或者少多个参数的情况 可选属性 // let goddess1:IFullName = {firstName: "邱", lastName: "淑贞"}; // let goddess2:IFullName = {firstName: "邱", lastName: "淑贞", age: 18}; // 多一个或者多多个 // 方案一: 使用变量 不推荐 let info = {firstName: "邱", lastName: "淑贞", age: 18, singName: "赌王", dance: "兔子舞"}; let goddess3:IFullName = info; // 方案二: 使用类型断言 let goddess4:IFullName = ({firstName: "邱", lastName: "淑贞", age: 18, singName: "赌王", dance: "兔子舞", abc: false}) as IFullName; interface Ibeauty { [props: string]: string } // 注意点: 对象中的键,最终都会被转化为字符串 let name: Ibeauty = { name1: "邱淑贞", name2: "古力娜扎", name3: "周慧敏", // name4: 123 // 123: 123 } // 方案三: 使用索引签名 let goddess5:IFullName = {firstName: "邱", lastName: "淑贞", age: 18, singName: "赌王", dance: "兔子舞", abc: 123, bcd: false};