Texto datilografado: mesmo tipo genérico que o tipo resolvido do parâmetro anterior

Gostaria de saber como especificar esse tipo genérico se for o mesmo do tipo resolvido do argumento anterior, quando o tipo puder ser de vários tipos.

Parque infantil TypeScript

function add<T extends (number | string)>(a: T, b: T): T {
    if (typeof a === 'string') {
        return a + b;
    } else if (typeof a === 'number') {
        return a + b;
    }
}

add('hello', ' world');
add(1, 1);

Eu quero poder dizer ao compilador que tudoT são do mesmo tipo, número ou sequência. Eu poderia ter perdido alguma sintaxe. Pode ser possível com tipos condicionais (até certo ponto) ...

questionAnswers(1)

yourAnswerToTheQuestion