34
目前我正在學習打字稿,並想知道它是如何可能將功能添加到現有的對象。假設我想爲Foo添加一個實現到String對象。從打字稿
String.prototype.Foo = function() {
// DO THIS...
}
應該理解的是打字稿類,接口和模塊是開放式的使我嘗試以下,沒有成功
1.參考JavaScript實現:在JavaScript中,我會做這個
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類的一部分?
沒錯,這就是它是如何命中註定的。請記住,TypeScript本身不是一種語言,它只是一個語法糖。所以用'JavaScript風格'寫一些東西是一個很好的做法,沒有任何缺點。 –
這個解決方案是否真的與** String **一起工作?因爲我正在做與_exact_相同的事情並且得到編譯錯誤,該屬性在String類型中不存在。我錯過了什麼? (TSC使用1.4.1) – sebas2day
@ sebas2day是它的工作原理 - http://tinyurl.com/ouwh3ln – series0ne