Typescript-variables

提供:Dev Guides
移動先:案内検索

TypeScript-変数

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

  • 変数名にはアルファベットと数字を含めることができます。
  • アンダースコア(_)とドル($)記号を除き、スペースと特殊文字を含めることはできません。 *変数名は数字で始めることはできません。

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

TypeScriptでの変数宣言

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

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

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

宣言タイプ

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

未定義

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

任意

*タイプではなく値も宣言します。 この場合、変数のデータ型はanyになり、未定義に初期化されます。

任意および未定義

次の表は、前述の変数宣言の有効な構文を示しています-

S.No. Variable Declaration Syntax & Description
1.
  • var name:string = ”mary”*

変数には、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'.