我们用两个对象来描述两个码农的工资:
const salary1 = {
baseSalary: 100_000,
yearlyBonus: 20_000
};
const salary2 = {
contractSalary: 110_000
};
然后写一个获取总工资的函数
function totalSalary(salaryObject: ???) {
let total = 0;
for (const name in salaryObject) {
total += salaryObject[name];
}
return total;
}
totalSalary(salary1); // => 120_000
totalSalary(salary2); // => 110_000
如果是你的,要如何声明totalSalary()
函数的salaryObject
参数,以接受具有字符串键和数字值的对象?
答案是使用一个索引签名!
接着,我们来看看什么是 TypeScript 索引签名以及何时需要它们。
1.什么是索引签名
索引签名的思想是在只知道键和值类型的情况下对结构未知的对象进行类型划分。
它完全符合salary
参数的情况,因为函数应该接受不同结构的salary
对象,唯一的要求是属性值为数字。
我们用索引签名来声明salaryObject
参数
function totalSalary(salaryObject: { [key: string]: number }) {