2016-04-18 9 views
2

TypeScriptを使用している他のユーザーもプロパティ(http://www.codingdefined.com/2015/05/get-and-set-property-in-typescript.html)を実装しているかどうか不思議です。TypeScriptプロパティ

私はTypeScriptコードでもプロパティを使用したいと思う傾向がありますが、私のチームの他の人はそれが過度だと思います。あなたがC#コード(Why use simple properties instead of fields in C#?)でプロパティを持っているのと同じ理由で、私はTypeScriptのプロパティが良いと思います。

これは「他の人が私の意見に同意すれば好奇心が強い」という質問ではなく、他の人が実際にTypeScriptでプロパティを実行しているのかどうか、なぜ、なぜそうではないのかを知ることに興味があります。同じ質問がC#のプロパティの質問とよく似ています。

実際にTypeScriptの質問をしている人が見つかりませんでした。

+0

これはjavascript([getters](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/get)/ [setters](https://)からのタイプスクリプト機能ではありません。 developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/set))。私はそれらを使うのが好きです。多くの場合、かなり便利です。 –

答えて

1

私が必要としない限り、通常は使用しません。大きなことは、公開変数を使用して開始し、必要に応じてgetterssettersを追加できることです。

だから私は、通常、次のように出て起動します。

class Test { 
    private _testField: string = null; 
    get fieldName() : string { 
     return this._testField; 
     doSomething(); 
    } 
    set fieldName(name : string) { 
     doSomethingElse(); 
     this._testField = name; 
    } 
} 

活字体では、私たちが持っていない:私はgettersetter必要実現したときに、その後

class Test { 
    testField: string = ""; 
} 

を、私はそれを変更しますそれらのすべてが値を取得して設定している場合は、getterssettersを追加してください。これは、getterやsetterにロジックを追加して下位互換性を破壊するC#のようなものとは対照的です。

+0

さて、技術的にはC#ではゲッターやセッターを追加する必要はありません。私たちは簡単にすべてのフィールドを公開することができ、必要なときにプロパティを追加するだけですが、ほとんどのフィールドを公開することは悪い習慣であることに同意しているようです。 C#では自動プロパティの方がはるかに簡単ですが、自動プロパティなどの問題がなく、手作業でgetterとsetterを書きました。それでも、誰もが公共財産と私的なフィールドを持っていることが良い習慣であることに同意したようで、なぜ同じことがTypeScriptには当てはまらないのだろうと思います。 – meyousikmann

+0

C#では、下位互換性を破壊するためです。 :) –

+0

すべてを動作させるためには、再コンパイルする必要があります。これは、多くの場合に大きな混乱となる可能性があります。これは、C#がコンパイル時にプロパティとパブリックフィールドを区別し、異なるバイトコードを発行するためです。 TypescriptはJSにコンパイルされ、すべてが動的なので問題はありません。 –

関連する問題