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.インターフェース
を拡張0interface 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メソッドを定義して実装する方法はありますか?
はまさに、それがあることを意味する方法を説明します。 TypeScriptはそれ自身の言語ではなく、単なる構文的な砂糖であることを忘れないでください。だから、「JavaScriptスタイル」で何かを書くことは、欠点のない良い方法です。 –
このソリューションは本当に** String **で動作しますか?私は_exact_同じことをやっているので、プロパティがString型に存在しないというコンパイルエラーが発生します。私は何が欠けていますか? (tsc 1.4.1を使用) – sebas2day
@ sebas2dayはいそれは動作します - http://tinyurl.com/ouwh3ln – series0ne