定义一个接口
interface FunName {
name: String,
sex: String,
age?: Number, // 可选属性 ? 如果有的话
[propName: string]: any // 索引签名必须为 string, number.... TypeScript 强制你必须明确这么做:
}
``
判断 如果没有 age 就把它们剩下两个传递过来 如果有 都传递
```js
function name(obj: FunName): void {
let { name, sex, age } = obj
if (age) {
console.log(`你的名字是:${name}${sex}${age}`);
} else {
console.log(name, sex);
}
}
name({ name: '羽神', sex: '女', age: 19 })
// 如果少一个 或者多一个该怎么办
name({ name: '羽神', sex: '女' })
name({ name: '羽神', sex: '女', age: 19, abc: 'abc' } as FunName) // 方法1 使用断言语句
let obj = { name: '羽神', sex: '女', age: 19, abc: 'abc' }
name(obj) // 方法2 使用变量
name({ name: '羽神', sex: '女', hh: 'hh', age: 19, abc: 'abc', 123: 123, def: 'def' }) // 方法3 使用索引签名