Estender os tipos básicos em TypeScript, erro: "_this não está definido ..."

Eu estou tentando reescrever alguns dos meus códigos JavaScript em TypeScript. Algum deste código tem referências a uma extensão que adicionei ao protótipo do objeto string.

String.prototype.format = function () {
    var formatted = this;
    for (var i = 0; i < arguments.length; i++) {
        formatted = formatted.replace(
            RegExp("\\{" + i + "\\}", 'g'), arguments[i].toString());
    }
    return formatted;
};

No entanto, adicionando isso com o script de tipo tem sido bastante desafiador.

Eu vi exemplos em que você declara uma extensão de uma interface básica e atribui uma função ao protótipo para corresponder à interface e fornecer sua funcionalidade. Igual a...

interface String {
    showString: () => string;
}

String.prototype.showString = (): string {
    return this;
};

Exceto isso erros porque "_this não está definido ..."

As outras coisas que tentei é criar uma nova classe para extender a string ...

export class MoreString extends string {

}

No entanto, isso também não funciona porque você só pode estender classes e string / String não são classes, mas construídas em tipos.

Qual é a maneira mais simples de estender o String e acessar o meu método de extensão?

questionAnswers(4)

yourAnswerToTheQuestion