How to write definition of type in function argument which is one of object properties with same type?
For example I have object:
type Article = {
name: string;
quantity: number;
priceNet: number;
priceGross: number;
};
and want to write function which summarise price depending on price type property:
function summarise(article: Article, priceTypeProperty: NeededProperty) {
return article[priceTypeProperty] * article.quantity;
}
How definition of NeededProperty should look like to ensure typescript that it's one of Article properties priceNet or priceGross and it is number type?
Previous answer by Yaman Abd is correct, but I found little more pretty solution:
Solution
Explanation
keyofmakes string type from one of given object propertiesPickis utility type that helps to select properties from Article type. So we are ensured that property is included in Article object type.This solution suggest properties which you can use while defining type
NeededType.Example
So proper example look like this: