I am trying to rewrite some of my JavaScript code in TypeScript. Some of this code has references to an extension I added to the string object prototype.

```js
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;
};

```

However adding this with type script has been quite challenging.

I have seen examples where you declare an extension of a basic interface then assign an function to the prototype to match the interface and provide your functionality. Like so...

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

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

```

Except this errors because "\_this is not defined..."

The other things I have tried is to create a new class to extend string...

```ts
export class MoreString extends string {

}

```

However this also does not work because you can only extend classes and string/String are not classes but built in types.

What is the simplest way to extend String and access my extension method?