You need to declare multiple types that you want to be acceptable, for example
type TIn1 = {
xa: number;
xb: number;
// ...
}
type TIn2 = {
// ...
}
type TIn3 = {
xa?: string;
xb?: string;
}
And then combine them in a union: TProps = TIn1 | TIn2 | TIn3