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