Typescript-variables
TypeScript-変数
定義により、変数は値を格納する「メモリ内の名前付きスペース」です。 つまり、プログラムの値のコンテナとして機能します。 TypeScript変数はJavaScriptの命名規則に従う必要があります-
- 変数名にはアルファベットと数字を含めることができます。
- アンダースコア(_)とドル($)記号を除き、スペースと特殊文字を含めることはできません。 *変数名は数字で始めることはできません。
変数は、使用する前に宣言する必要があります。* var *キーワードを使用して変数を宣言します。
TypeScriptでの変数宣言
TypeScriptで変数を宣言するための型構文は、変数名の後にコロン(:)を含め、その後にその型を含めることです。 JavaScriptと同様に、 var キーワードを使用して変数を宣言します。
あなたが変数を宣言するとき、あなたは4つのオプションがあります-
- 1つのステートメントでそのタイプと値を宣言します。
- タイプを宣言しますが、値は宣言しません。 この場合、変数は未定義に設定されます。
- 値を宣言しますが、型は宣言しません。 変数の型は、割り当てられた値のデータ型に設定されます。
*タイプではなく値も宣言します。 この場合、変数のデータ型はanyになり、未定義に初期化されます。
次の表は、前述の変数宣言の有効な構文を示しています-
S.No. | Variable Declaration Syntax & Description |
---|---|
1. |
変数には、string型の値が格納されます |
2. |
var name:string; 変数は文字列変数です。 変数の値はデフォルトで未定義に設定されています |
3. |
var name = ”mary” 変数の型は、値のデータ型から推測されます。 ここでは、変数は文字列型です |
4. |
var name; 変数のデータ型はanyです。 その値はデフォルトで未定義に設定されています。 |
例: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は、このプロセスを_Type Assertion_と呼びます。 構文は、ターゲットタイプを<>記号の間に配置し、変数または式の前に配置します。 次の例は、この概念を説明します-
例
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変数は、次のスコープにすることができます-
- グローバルスコープ-グローバル変数はプログラミング構造の外側で宣言されます。 これらの変数には、コード内のどこからでもアクセスできます。
- クラススコープ-これらの変数は*フィールド*とも呼ばれます。 フィールドまたはクラス変数は、クラス内でメソッドの外部で宣言されます。 これらの変数は、クラスのオブジェクトを使用してアクセスできます。 フィールドは静的にすることもできます。 静的フィールドには、クラス名を使用してアクセスできます。
- ローカルスコープ-ローカル変数は、名前が示すように、メソッド、ループなどの構造内で宣言されます。 ローカル変数は、宣言されている構造内でのみアクセス可能です。
次の例は、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'.