TypeScript-변수

정의에 따라 변수는 값을 저장하는 "메모리의 명명 된 공간"입니다. 즉, 프로그램에서 값의 컨테이너 역할을합니다. TypeScript 변수는 JavaScript 명명 규칙을 따라야합니다-

  • 변수 이름에는 알파벳과 숫자가 포함될 수 있습니다.

  • 밑줄 (_) 및 달러 ($) 기호를 제외하고 공백과 특수 문자를 포함 할 수 없습니다.

  • 변수 이름은 숫자로 시작할 수 없습니다.

변수는 사용하기 전에 선언해야합니다. 사용var 변수를 선언하는 키워드.

TypeScript의 변수 선언

TypeScript에서 변수를 선언하는 유형 구문은 변수 이름 뒤에 콜론 (:)을 포함하고 그 뒤에 해당 유형을 포함하는 것입니다. JavaScript에서와 마찬가지로var 변수를 선언하는 키워드입니다.

변수를 선언 할 때 네 가지 옵션이 있습니다.

  • 하나의 명령문에서 유형과 값을 선언하십시오.

  • 유형을 선언하지만 값은 없습니다. 이 경우 변수는 정의되지 않음으로 설정됩니다.

  • 값을 선언하지만 유형은 없습니다. 변수 유형은 할당 된 값의 데이터 유형으로 설정됩니다.

  • 유형이 아닌 값을 선언하지 마십시오. 이 경우 변수의 데이터 유형은 임의이며 정의되지 않은 상태로 초기화됩니다.

다음 표는 위에서 설명한 변수 선언에 대한 유효한 구문을 보여줍니다.

S. 아니. 변수 선언 구문 및 설명
1.

var name:string = ”mary”

변수는 문자열 유형의 값을 저장합니다.

2.

var name:string;

변수는 문자열 변수입니다. 변수의 값은 기본적으로 정의되지 않음으로 설정됩니다.

삼.

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는 Strong Typing을 따릅니다. 강력한 형식 지정 구문은 할당 연산자 (=)의 양쪽에 지정된 유형이 동일하도록합니다. 이것이 다음 코드가 컴파일 오류를 일으키는 이유입니다.

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 변수는 다음 범위가 될 수 있습니다-

  • 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'.