2016-08-02 6 views
1

以下のタイプのスクリプトコードでは、名前が "public"か "private"かどうかにかかわらず、生成されるJavaスクリプトコードは同じです。typescriptクラスの "public"/"private"の理解

私の質問は、どのようにコンストラクタのパラメータを にするかを決定する方法です。生成された

// typescript code 
class Animal { 
constructor(public name: string) {  
} 

} 

// generated JS code 
var Animal = (function() { 
function Animal(name) { 
    this.name = name; 
} 
return Animal; 
}()); 
+2

JavaScriptには、プライベート/パブリックという概念はありません。しかし、TypeScriptはそうです。したがって、名前をプライベートにすると、残りの** TypeScript **コードはTypeScriptコンパイラによってフィールドにアクセスすることが許可されませんが、公開されている場合はそのフィールドにアクセスされます。 –

答えて

1

ジャバスクリプトコードは、彼らが同じJavaScriptを生産するが、限りタイプが懸念しているのと同じ意味を持っていない

同じです。

privateメンバーは、クラス内からのみアクセスできますが、publicは、外部で超過することができます。もっと

違いはここに含まれます。

let foo = 123; 

const foo = 123; 

と同じES5を生成しますがしかし最初のケースでlet foo = 123;foo = 456がコンパイルされますhttps://basarat.gitbooks.io/typescript/content/docs/classes.html#access-modifiers

もう一つの例上質ですが、const foo = 123; foo = 456はコンパイル時にエラーになります。

関連する問題