Extension methods é uma funcionalidade bem legal mesmo. Apesar de eu não usar C#, já tirei proveito disso em Kotlin.

Em TypeScript, para adicionar propriedades ao prototype de algum objeto global sem abrir mão da tipagem, vc pode usar uma interface. Por exemplo:

interface String {
  log(): void;
}

String.prototype.log = function () {
  console.log(this);
};

const text = "JavaScript Extension methods";
text.log();

O ideal é mover a declaração da interface para um arquivo *.d.ts para que a definição esteja disponível em qualquer módulo.

Puts!! Genial, eu não sabia massa que a cada dia o camarada aprende uma coisa nova!

Mas Kotlin tem como fazer também? Não sabia! Outra coisa, java tem como fazer algo similar, já procurei a um tempo atrás quando precisei uma época atrás.

Muito obrigado pela dica mestre!