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?