TypeScript-変数

変数は、定義上、値を格納する「メモリ内の名前付きスペース」です。つまり、プログラム内の値のコンテナとして機能します。TypeScript変数はJavaScriptの命名規則に従う必要があります-

  • 変数名には、アルファベットと数字を含めることができます。

  • アンダースコア(_)とドル($)記号を除いて、スペースと特殊文字を含めることはできません。

  • 変数名を数字で始めることはできません。

変数は、使用する前に宣言する必要があります。使用var 変数を宣言するキーワード。

TypeScriptでの変数宣言

TypeScriptで変数を宣言するための型構文は、変数名の後にコロン(:)を含め、その後にその型を含めることです。JavaScriptの場合と同様に、var 変数を宣言するキーワード。

変数を宣言するとき、4つのオプションがあります-

  • そのタイプと値を1つのステートメントで宣言します。

  • タイプを宣言しますが、値は宣言しません。この場合、変数は未定義に設定されます。

  • その値を宣言しますが、タイプは宣言しません。変数タイプは、割り当てられた値のデータタイプに設定されます。

  • どちらの値もタイプではないと宣言します。この場合、変数のデータ型はanyになり、undefinedに初期化されます。

次の表は、上記で説明した変数宣言の有効な構文を示しています。

S.No. 変数宣言の構文と説明
1.1。

var name:string = ”mary”

変数は文字列型の値を格納します

2.2。

var name:string;

変数は文字列変数です。変数の値はデフォルトで未定義に設定されています

3.3。

var name = ”mary”

変数の型は、値のデータ型から推測されます。ここで、変数は文字列型です

4.4。

var name;

変数のデータ型は任意です。その値はデフォルトで未定義に設定されています。

例:TypeScriptの変数

var name:string = "John"; 
var score1:number = 50;
var score2:number = 42.50
var sum = score1 + score2 
console.log("name"+name) 
console.log("first score: "+score1) 
console.log("second score: "+score2) 
console.log("sum of the scores: "+sum)

コンパイル時に、次のJavaScriptコードが生成されます。

//Generated by typescript 1.8.10
var name = "John";
var score1 = 50;
var score2 = 42.50;
var sum = score1 + score2;
console.log("name" + name);
console.log("first score: " + score1);
console.log("second score : " + score2);
console.log("sum of the scores: " + sum);

上記のプログラムの出力を以下に示します-

name:John 
first score:50 
second score:42.50 
sum of the scores:92.50

同じタイプではない変数に値を割り当てようとすると、TypeScriptコンパイラはエラーを生成します。したがって、TypeScriptは強い型付けに従います。強い型付け構文は、代入演算子(=)のいずれかの側で指定された型が同じであることを保証します。これが、次のコードでコンパイルエラーが発生する理由です-

var num:number = "hello"     // will result in a compilation error

TypeScriptでの型アサーション

TypeScriptを使用すると、変数をあるタイプから別のタイプに変更できます。TypeScriptは、このプロセスをタイプアサーションと呼びます。構文は、ターゲットタイプを<>シンボルの間に置き、変数または式の前に配置することです。次の例は、この概念を説明しています-

var str = '1' 
var str2:number = <number> <any> str   //str is now of type number 
console.log(typeof(str2))

Visual Studio Codeの型アサーションステートメントにマウスポインターを合わせると、変数のデータ型の変更が表示されます。基本的に、SがTのサブタイプであるか、TがSのサブタイプである場合、タイプSからTへのアサーションを成功させることができます。

「型キャスト」と呼ばれない理由は、キャストは一般にある種のランタイムサポートを意味するのに対し、「型アサーション」は純粋にコンパイル時の構造であり、コードの作成方法に関するヒントをコンパイラに提供する方法であるためです。分析されます。

コンパイル時に、次のJavaScriptコードが生成されます。

"use strict";
var str = '1';
var str2 = str; //str is now of type number 
console.log(typeof (str2));

次の出力が生成されます-

string

TypeScriptでの推定入力

Typescriptは強く型付けされているという事実を考えると、この機能はオプションです。TypeScriptは、変数の動的型付けも推奨します。つまり、TypeScriptは、型なしで変数を宣言することを推奨します。このような場合、コンパイラーは、割り当てられた値に基づいて変数のタイプを判別します。TypeScriptは、コード内で変数の最初の使用法を見つけ、最初に設定されたタイプを判別してから、コードブロックの残りの部分でこの変数に同じタイプを想定します。

同じことが次のコードスニペットで説明されています-

例:推測される入力

var num = 2;    // data type inferred as  number 
console.log("value of num "+num); 
num = "12";
console.log(num);

上記のコードスニペットでは-

  • コードは変数を宣言し、その値を2に設定します。変数宣言はデータ型を指定しないことに注意してください。したがって、プログラムは推定型を使用して変数のデータ型を決定します。つまり、変数が設定されている最初の値の型を割り当てます。この場合、num タイプ番号に設定されます。

  • コードが変数の値を文字列に設定しようとしたとき。変数の型がすでに数値に設定されているため、コンパイラはエラーをスローします。

次の出力が生成されます-

error TS2011: Cannot convert 'string' to 'number'.

TypeScript変数スコープ

変数のスコープは、変数が定義される場所を指定します。プログラム内の変数の可用性は、そのスコープによって決定されます。TypeScript変数のスコープは次のとおりです-

  • Global Scope−グローバル変数はプログラミング構造の外部で宣言されます。これらの変数には、コード内のどこからでもアクセスできます。

  • Class Scope −これらの変数は fields。フィールドまたはクラス変数は、クラス内であるがメソッド外で宣言されています。これらの変数には、クラスのオブジェクトを使用してアクセスできます。フィールドは静的にすることもできます。静的フィールドには、クラス名を使用してアクセスできます。

  • Local Scope −ローカル変数は、その名前が示すように、メソッド、ループなどの構成内で宣言されます。ローカル変数は、宣言された構成内でのみアクセスできます。

次の例は、TypeScriptの変数スコープを示しています。

例:可変スコープ

var global_num = 12          //global variable 
class Numbers { 
   num_val = 13;             //class variable 
   static sval = 10;         //static field 
   
   storeNum():void { 
      var local_num = 14;    //local variable 
   } 
} 
console.log("Global num: "+global_num)  
console.log(Numbers.sval)   //static variable  
var obj = new Numbers(); 
console.log("Global num: "+obj.num_val)

トランスパイル時に、次のJavaScriptコードが生成されます-

var global_num = 12;              //global variable 
var Numbers = (function () {
   function Numbers() {
      this.num_val = 13;          //class variable 
   }
   Numbers.prototype.storeNum = function () {
      var local_num = 14;        //local variable 
   };
   Numbers.sval = 10;            //static field 
   return Numbers;
}());

console.log("Global num: " + global_num);
console.log(Numbers.sval);       //static variable  

var obj = new Numbers();
console.log("Global num: " + obj.num_val);

次の出力が生成されます-

Global num: 12
10
Global num: 13

メソッドの外部でローカル変数にアクセスしようとすると、コンパイルエラーが発生します。

error TS2095: Could not find symbol 'local_num'.