Please keep in mind that Numbers contains unordered set of keys, just like HashMap whereas both functionAdd and functionMultiply expects an ordered tuple of arguments. In other words, These methods expect:
functionAdd(...[number1, number2, number3]:[number, number, number])
It means that there is no safe way to transform Numbers into ordered tuple.
Actualy, there is a way to transform union to tuple but there is no order guarantee in unions.
SO, I believe you have two options.
- Either declare
Numbers as labeled tuple :
type Numbers = [number1: number, number2: number, number3: number]
// and use it
public abstract functionMultiply(...props:Numbers): number
- Or pass it to functions as is (as object with three props):
interface Numbers {
number1: number
number2: number
number3: number
}
public abstract functionMultiply({number1, number2, number3}: Numbers): number