はい、クラスフィールドにアクセスする場合は、this.field
を使用する必要があります。それは本当に短く退屈な答えですが、ここではいくつかの文脈があります。
JavaScript/TypeScriptクラスの重要な点は、既存のプロトタイプベースのオブジェクトシステムの構文砂糖に過ぎないことです。例えば、コードのこれら2つの機能的に同等です:あなたは活字体コンパイラによって出力されるJavaScriptを見れば実際に
// ===== Class syntax =====
class MyClass {
myField: string;
constructor() {
this.myField = "Hello, world!";
}
myMethod() {
return this.myField;
}
}
let myInstance = new MyClass();
// ===== Prototype syntax =====
function MyClass() {
this.myField = "Hello, world!";
}
MyClass.prototype.myMethod = function() {
return this.myField;
};
let myInstance = new MyClass();
、後者の例では、(与えるか、または取る)表示されますおそらく何です。実際には、コード内でクラスフィールドを使用することはできますが、JavaScriptには実際にはコンセプトがありません。コンストラクタ関数のプロパティを取得して設定するだけです。
クラスが通常の関数とは異なる構文規則を持つのではなく、可能な限り既存の規則とのマッピングを維持し、クラス構文を最小限に保つように仕様が設計されました。このため、JavaやC#と異なり、this
を指定する必要があります。
変数がグローバルである場合は、 'this'キーワードを使用する必要があります。 'let'を使うことはできますが、関数内で宣言された変数(ローカル変数)に対してのみ使用できます。 –
[this](https://github.com/Microsoft/TypeScript/wiki/'this--in-TypeScript)は、javascriptとtypescriptのコンテキストで 'this'を理解するのに役立ちます –