Mögliche Duplizieren:
How does prototype extend on typescript?Erweiterung der Funktionalität in Typoskript
Ich bin derzeit Lernen Typoskript, und würde gerne wissen, wie es möglich ist, Funktionalität vorhandener Objekte hinzuzufügen. 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...
}
dass Typoskript Klassen, Schnittstellen und Module zu verstehen sind offen beendet mich dazu gebracht, die folgende, um zu versuchen, ohne Erfolg
1. Referenz die JavaScript-Implementierung von Typoskript
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 aus diesen Ergebnissen sehen kann, so weit ich habe die Methode über eine Schnittstelle Vertrag, aber keine Implementierung, so, in der Lage zu hinzufügen Wie Ich definiere und implementiere meine Foo-Methode als Teil der bestehenden String-Klasse?
Genau, das ist, wie es gemeint ist, zu sein. Denken Sie daran, TypeScript ist keine Sprache für sich, es ist nur ein syntaktischer Zucker. So etwas im "JavaScript-Stil" zu schreiben ist eine gute Übung, die keinerlei Nachteile hat. –
Funktioniert diese Lösung wirklich mit ** String **? Weil ich _exact_ dasselbe mache und Kompilierungsfehler erhalte, dass die Eigenschaft nicht im String-Typ existiert. Was vermisse ich? (mit tsc 1.4.1) – sebas2day
@ sebas2day ja es funktioniert - http://tinyurl.com/ouwh3ln – series0ne