¿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

Respuestas a la pregunta(1)

Su respuesta a la pregunta