The way I foud to pass propery of object is using const myproperty = 'name' as const;
type MyObject = {
name: string,
age: number;
}
let obj:MyObject = {name: 'Ryu', age:30};
const myproperty = 'name' as const;
console.log(obj[myproperty])
For example, if you want to pass parameters on the function called sum() to sum all property 'visited', another time you want to sum all deals in this same function, using property 'deals', you can put all properties on an array and passing a index of this array, sum(0) or sum(1).
type Sale = {
id: number;
visited: number;
deals: number;
amount: number;
}
let data:Array<Sale> =[{id: 1, visited: 83, deals: 66, amount: 5501},
{id: 2, visited: 113, deals: 78, amount: 8290},
{id: 3, visited: 36, deals: 12, amount: 6096}]
const args = ['visited', 'deals', 'amount'] as const;
const sum = (property:number) => {
let total:number = 0;
data.forEach((element) => {
total += element[args[property]];
});
return total;
}
console.log(sum(0)) //Visited
console.log(sum(1)) //deals
console.log(sum(2)) //amount
Or you can use enum
for more general use.
enum CategoryOfSum{
VISITED = 'visited',
DEDALS = 'deals',
AMOUNT = 'amount'
}
const sum = (type:CategoryOfSum) => {
let total:number = 0;
data.forEach((element) => {
total += element[type];
});
return total;
}
sum(CategoryOfSum.VISITED)
sum(CategoryOfSum.DEDALS)
sum(CategoryOfSum.AMOUNT)