I have a list of interfaces that extends one basic interface.
I have also some functions that can accept any of these interfaces.
I would like to create a new interface that describe that kind of parameter.
So I have something like this:
interface BasicInterface {...};
interface A extends BasicInterface {...};
interface B extends BasicInterface {...};
and I would like something like
interface C = A | B;
I know in my functions I can do
function X(param1: A | B) {};
but since it is more than one function I would like to have just one interface for all of them.
So, after some digging in the Typescript documentation I've found what I was looking for: type aliases.
I can declare a new type like type C = A | B;
Then in function I use type guards to access the right thing:
function isA(param: C): param is A {
return param.type === A;
}
function X(param1: C) {
if (isA(param1)) //things related to A
else //things related to B
};