Estendendo a funcionalidade no TypeScript [duplicado]

Duplicata Possível:
Como o protótipo se estende no typescript?

No momento, estou aprendendo o TypeScript e gostaria de saber como é possível adicionar funcionalidade a objetos existentes. Digamos que eu queira adicionar uma implementação para Foo ao objeto String. Em JavaScript eu faria isso:

String.prototype.Foo = function() {
    // DO THIS...
}

Entender que as classes, interfaces e módulos do TypeScript são abertos levou-me a tentar o seguinte, sem sucesso

1. Referencie a implementação JavaScript do TypeScript

    JavaScript:

    String.prototype.Foo = function() {
        // DO THIS...
    }

    TypeScript:

    var x = "Hello World";
    x.Foo(); //ERROR, Method does not exist

2. Estenda a interface

interface String {
    Foo(): number;
}

var x = "Hello World";
x.Foo(); //Exists but no implementation.

3. Estenda a classe

class String {
    Foo(): number {
        return 0;
    }
}

// ERROR: Duplicate identifier 'String'

Como você pode ver a partir desses resultados, até agora eu consegui adicionar o método por meio de um contrato de interface, mas sem implementação, então, como vou definir e implementar meu método Foo como parte da classe String pré-existente?

questionAnswers(1)

yourAnswerToTheQuestion