Olası Çoğalt:
How does prototype extend on typescript?genişletme işlevselliği
Şu anda typescript öğreniyorum ve mevcut nesnelere işlevsellik eklemek için nasıl mümkün olduğunu bilmek istiyorum. Dize nesnesine Foo için bir uygulama eklemek istediğimi varsayalım. JavaScript'inizde bunu yapabilirmiydim:
String.prototype.Foo = function() {
// DO THIS...
}
o typescript sınıflar, arayüzler ve modüller anlamak açık uçlu olan aşağıdakileri deneyin götürdü, başarı olmadan
1. Referans JavaScript uygulaması
typescript danJavaScript:
String.prototype.Foo = function() {
// DO THIS...
}
TypeScript:
var x = "Hello World";
x.Foo(); //ERROR, Method does not exist
2. arayüzü
uzatma 0interface String {
Foo(): number;
}
var x = "Hello World";
x.Foo(); //Exists but no implementation.
3. nasıl, sınıf
class String {
Foo(): number {
return 0;
}
}
// ERROR: Duplicate identifier 'String'
Şu ana kadar ben bir arayüz sözleşme yoluyla yöntemi eklemek mümkün olmuştur, bu sonuçlardan da görebileceğiniz gibi, ancak hiçbir uygulama uzatın, bu yüzden Önceden varolan String sınıfının bir parçası olarak Foo yöntemimi tanımlamak ve uygulamaktan bahsediyorum?
Kesinlikle, o olması gerekiyordu nasıl. Unutmayın, TypeScript kendi içinde bir dil değildir, sadece sözdizimsel bir şekerdir. Yani 'JavaScript stilinde' bir şeyler yazmak, herhangi bir dezavantajı olmayan iyi bir uygulamadır. –
Bu çözüm gerçekten ** String ** ile çalışıyor mu? Çünkü _exact_ aynı şeyi yapıyorum ve özellik String türünde mevcut değil derleme hataları alıyorum. Neyi kaçırıyorum? (tsc 1.4.1 kullanarak) – sebas2day
@ sebas2day evet işe yarar - http://tinyurl.com/ouwh3ln – series0ne