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