¿Es posible declarar una función que acepta una matriz de instancias de superclase y devuelve el tipo de subclase más específico
Estoy escribiendo un archivo de declaraciones de Typecript para mi paquete Javascript.
Mi biblioteca tiene una función que acepta una matriz de elementos de superclase y devuelve la superclase.
function x(args: SuperClass[]): SuperClass
Me gustaría modificar el tipo de retorno del método para que devuelva el tipo del elemento de subclase más específico.
function x(args: SuperClass[]): TypeOfMostSpecificArg(args)
Por ejempl
interface A {}
interface B extends A {}
interface C extends B {}
let a: A, b: B, c: C
x([]) // should have return type A
x([a, b, a]) // should have return type B
x([a, b, c]) // should have return type C
¿Es posible