タグ

ブックマーク / numb86-tech.hatenablog.com (2)

  • TypeScript における変性(variance)について - 30歳からのプログラミング

    プログラミングの型システムに関する記事を読んでいると、共変や反変といった用語が出てくることがある。 TypeScript や Flow についての記事でも、見かけることがある。 それらは TypeScript を使う上で必須の知識ではないが、把握しておくに越したことはない。 この記事では、TypeScript を題材にして、変性について説明していく。 TypeScript に関する議論を理解できるようになることがこの記事の目的であり、より詳細な、学術的、数学的な内容には踏み込まない。 この記事の内容は、TypeScript のv3.9.5で動作確認している。 変性 変性(variance)とは、任意の型Tに対してどのような性質を持つのか示したものであり、以下の 4 種類がある。 不変性(invariance) Tそのものが必要 共変性(covariance) Tそのものか、そのサブタイプが

    TypeScript における変性(variance)について - 30歳からのプログラミング
  • var,let,constの違いは、ブロックスコープと巻き上げ - 30歳からのプログラミング

    JavaScriptにおける変数宣言はvarによって行われてきたが、ES2015で、letとconstが加わった。 varとの違いは、ブロックスコープを作るということと、変数の巻き上げの挙動が異なる、ということである。 このことについて、varとletを比較することで説明していく。constについては最後に触れる。 ブロックスコープ これまでのJavaScriptでは、スコープをつくるのは、 グローバルスコープ ローカルスコープ evalスコープ の3つのみであった。 スコープについては以下を参照。 スコープとクロージャ {}で囲まれている領域をブロックと呼ぶが、これはスコープは作らなかった。そのため、ifやforはスコープを持たなかった。 var x = 0; console.log(x); // 0 if(true){ var x = 1; console.log(x); // 1 }

    var,let,constの違いは、ブロックスコープと巻き上げ - 30歳からのプログラミング
  • 1