Estendendo a funcionalidade no TypeScript [duplicado]
Duplicata Possível:
Como o protótipo se estende no typescript?
No momento, estou aprendendo o TypeScript e gostaria de saber como é possível adicionar funcionalidade a objetos existentes. Digamos que eu queira adicionar uma implementação para Foo ao objeto String. Em JavaScript eu faria isso:
String.prototype.Foo = function() {
// DO THIS...
}
Entender que as classes, interfaces e módulos do TypeScript são abertos levou-me a tentar o seguinte, sem sucesso
1. Referencie a implementação JavaScript do TypeScript
JavaScript:
String.prototype.Foo = function() {
// DO THIS...
}
TypeScript:
var x = "Hello World";
x.Foo(); //ERROR, Method does not exist
2. Estenda a interface
interface String {
Foo(): number;
}
var x = "Hello World";
x.Foo(); //Exists but no implementation.
3. Estenda a classe
class String {
Foo(): number {
return 0;
}
}
// ERROR: Duplicate identifier 'String'
Como você pode ver a partir desses resultados, até agora eu consegui adicionar o método por meio de um contrato de interface, mas sem implementação, então, como vou definir e implementar meu método Foo como parte da classe String pré-existente?