2016-08-09 15 views
1

TypeScriptでは、いつ "let"を使用し、いつ "const"を使用しますか?TypeScriptでは、いつ "let"を使用しますか、いつ "const"を使用しますか?

+3

を意味する可能性があるため、あなたが、少なくともそう

type ROO = Readonly<SomeType> const x: ROO = someReferenceValue x.someProp = "A wanna be a bar!" //compile error 

を作成することができ活字体に付与されました。 – ssube

+0

変数を宣言したいときに使用します。 – 4castle

答えて

7

constconstantの略で、後で変数を再割り当てすることはできません。

letは、ブロックは、それがforループ内で宣言することができ、そのforループの本体に対してローカルであろう(そしてそのためには、それの外に存在していない)を意味し、スコープされていることを除いてvarに類似している

後者は、どこでも宣言できる変数ですが、関数スコープに対して常にローカルである変数であるvarとは異なります。

一般に、変数を可能な限りconstとして試してみることをお勧めします。

+0

注目に値する - これはTypeScriptだけに特化したものではなく、ECMAScript 2015が現在の標準であるため、一般的なJavaScriptです。 –

+0

@AdrianWydmanski私はさらに進んで、 'const' /' let'や 'val' /' var'や 'final'/notを提供する言語に適用されると言います。 – ssube

0

私はほぼ独占的なプログラミングをしていますが、constletの間の目的はかなり役に立たないことがわかりました。 名前に値を再割り当てすることはありません。決して - 言語に関係なく。

2つの理由で問題が発生していると言われていますが、

  • constは(ない真剣!)長いletよりではありません
  • constは一種のバック通信:ねえ! I

    これが可能であることを私は

全く驚いた複数回の同僚を持っていた(まあ、それはですが...)

const x = { foo: "bar" } 
x["foo"] = "Not bar!" 
一定のだが、それは真実ではない確かに名前とそのreferenceはconstですが、参照されるオブジェクトはそうではありません。あなたは、後で値を変更することがあります知っていて、上出来な理由がない限り、活字体 constは最終的にあなたが `const`を使う const

+0

2番目のポイントは正しいタイプ・スクリプトは、再割り当てが必要でない限り、すべての変数に 'const'を使用することをお勧めしません(https://www.typescriptlang.org/docs/handbook/variable-declarations.html let vs const)、これはほとんどのプログラミング言語では定数が意味するものではないためです。 ECMA6の例はすべて、「期待される」使用法(const pi = 3.14159)を持っています。これにより、コンパイル時にすべての定数がプリミティブ値に置き換えられると想像できます。変数に 'const'を使うのは矛盾です。 TypeScriptは、複合型に適用される 'const'を停止するようにECMA6の使用を制限する必要があります。 –

関連する問題