Erweiterung der Funktionalität in TypeScript [duplizieren]

Mögliche Duplikate:
Wie erweitert sich der Prototyp auf Typoskript?

Ich lerne gerade TypeScript und möchte wissen, wie es möglich ist, vorhandene Objekte um Funktionen zu erweitern. Angenommen, ich möchte dem String-Objekt eine Implementierung für Foo hinzufügen. In JavaScript würde ich dies tun:

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

Das Verständnis, dass TypeScript-Klassen, -Schnittstellen und -Module offen sind, hat mich dazu veranlasst, Folgendes ohne Erfolg zu versuchen

1. Verweisen Sie auf die JavaScript-Implementierung von TypeScript

    JavaScript:

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

    TypeScript:

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

2. Erweitern Sie die Schnittstelle

interface String {
    Foo(): number;
}

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

3. Erweitern Sie die Klasse

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

// ERROR: Duplicate identifier 'String'

Wie Sie anhand dieser Ergebnisse sehen können, konnte ich die Methode bisher über einen Schnittstellenvertrag, aber ohne Implementierung hinzufügen. Wie definiere und implementiere ich meine Foo-Methode als Teil der bereits vorhandenen String-Klasse?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage