私は現在 TypeScript を学んでおり、既存のオブジェクトに機能を追加する方法を知りたいです。Foo の実装を String オブジェクトに追加したいとします。JavaScript では、次のようにします。
String.prototype.Foo = function() {
// DO THIS...
}
TypeScript のクラス、インターフェース、およびモジュールがオープンエンドであることを理解した結果、次のことを試してみましたが、成功しませんでした
1. TypeScript から 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'
これらの結果からわかるように、これまでのところインターフェイス コントラクトを介してメソッドを追加できましたが、実装はできませんでした。では、既存の String クラスの一部として Foo メソッドを定義して実装するにはどうすればよいでしょうか?