Расширение функциональности в TypeScript [дубликат]

Возможный дубликат:
Как прототип распространяется на машинопись?

В настоящее время я изучаю TypeScript и хотел бы знать, как можно добавить функциональность к существующим объектам. Скажем, я хочу добавить реализацию Foo к объекту String. В JavaScript я бы сделал это:

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

Понимание того, что классы, интерфейсы и модули TypeScript являются открытыми, заставило меня попробовать безуспешно

1. Ссылка на реализацию JavaScript из TypeScript

    JavaScript:

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

    TypeScript:

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

2. Расширить интерфейс

interface String {
    Foo(): number;
}

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

3. Расширить класс

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

// ERROR: Duplicate identifier 'String'

Как вы можете видеть из этих результатов, до сих пор я был в состоянии добавить метод через интерфейсный контракт, но без реализации, поэтому, как мне определить и реализовать мой метод Foo как часть ранее существующего класса String?

Ответы на вопрос(1)

Ваш ответ на вопрос