2023년 3월 16일 목요일

[typescript] 4. typescript 변수

 [typescript] 4. typescript 변수




<typescript 변수 할당 구조>



1. 선언자

  - 변수 앞에 위치하는 키워드

  - 선언자에 따라서 변수의 scope가 달라진다.

  1) scope level

    - 함수 level  : 선언자가 함수 level일 경우 해당 변수는 함수 안에 개별 선언으로 인식 된다.

    - 블록 level  : 선언자가 블록 level일 경우 해당 변수는 블록 안에 개별 선언으로 인식 된다.    - 전역 level  : 선언자가 전역 level일 경우 해당 변수는 프로그램 모든 범위에서 개별 선언으로 인식 된다.

  2) scope의 운선 순위

    - 블록 level > 함수 level > 전역 level 

 항목

 scope (영향 범위)

 특징

 함수
 level

 블록

 level

 전역

 level 

 var

 O

 X

 O 

 호이스팅 이된다.

 (호이스팅 : 변수를 나중에 선언해도 실행시 해당 선언을 코드 최상단으로 올리는 것을 말한다)

 Ex) var test = 1

 let

 O

 O

 O

 1. 같은 블록 내에서 같은 이름의 변수를 중복해서 선언 할 수 없다

 2. 변수를 초기화 하기 전에는 변수에 접근 할 수 없게 해서 호이스팅을 방지

 3. 선언할 변수에 블록 레벨 스코프를 적용

 Ex) let test = 1

 const O O O

 1. 선언과 변수 초기화를 동시애 해야 한다.

 2. 변수 초기화 후에는 값을 변경 할 수 없다

 Ex) const test = 1.



2. type - 기본 타입

  - typescript에서는 타입을 지정하지 않으면 변수에 할당되는 값에 따라 타입이 정해 집니다.

  - 유통성있게 타입을 명시하면 컴파일시 타입 검사를 하고 타입이 없으면 실행 시간에 타입을 정합니다.

  Ex) 실행 시간에 타입을 설정하는 예제 코드 

var string = "string"
var number = 1

console.log(typeof string) // string type 으로 출력된다.
console.log(typeof number) // number type 으로 출력된다.


type

 설명 

 string 

 문자열을 저장

var str: string = "test"

 number 

 숫자를 저장

var dec: number = 1

 boolean 

 true, false 를 저장

var bool: boolean = true;

 symbol 

 - Symbol() 함수를 사용하여 고유하고 수정 불가능한 타입을 만들어 냅니다.

   객체 속성의 식별자로 사용 됩니다.

 - 사용법을 잘 모르겠음

let sym = Symbol('hello');

 enum

 - number type에서 확장된 type으로 Enume의 첫번째 요소는 0부터 시작 합니다.

 - enum type에서 요소만 할당 가능합니다.

enum weekday { Mon, Tue, Wd, Thu = 4 }
let day: weekday = weekday.Mon;
console.log("enum Thu :" , weekday.Thu)
console.log("enum Thu :" , weekday["Thu"])
 문자열 리터럴 

 - string type의 확장 형으로 사용자 정의 타입에 정의한 문자열만 할당 가능 합니다.

type EventType = "keyup" | "mouseover";
let event_name: EventType = "keyup";




3. type - 기타 타입 

 type

 설명

 union

 - 2개 이상의 타입을 하나 타입으로 정의한 타입 입니다.

 - 정의한 타입만 할당 가능 합니다.

var x: string|number = 1;
x = "2";

 intersection 

 - 2개의 타입을 합쳐서 하나의 타입으로 정의한 타입 입니다.

 - 다음 코드에서 catbird 변수가 intersection type인 Cat & Bird로 선언되어 있으므로 

   할당 객체는 leg, wing 속성만 허용 합니다.

interface Cat { leg: number;}
interface Bird { wing: number;}
let catbird: Cat & Bird = { leg: 4, wing: 2}

 void

 - 빈 값을 나타내는 타입 입니다.

 1) 함수에 반환 값이 없을때 void 타입을 선언 합니다.

function test(): void {
console.log('hello')
}

 2) undefine을 받을때 사용합니다.

let unusable: void = undefined;

 undefine

 - 어떤 한 빈 값으로도 초기화 되지 않는 타입 

let undefined_value: undefined = undefined;

 null 

 - 빈 객체로 초기화 합니다.

var person: any = { name: "happy"};
person = null;

 any

 - 어떤 타입이든 다 받을 수 있는 type 입니다.  

let any_type: any = "string";
any_type = 1;
any_type = {};


4. type - 객체 타입 

  type

 설명 

 Array

 - 배열 요소에 대응 하는 타입 입니다.

 - 숫자형 Array일 경우 type 부분 number[]

let items: number[] = [ 1,2,3];

 - 문자열 Array일 경우 type 부분 string[]

let items: string[] = [ "1", "2", "3"];

 generic Array

 - 배열 type을 Array<T> 형태로 선언 합니다. T는 타입을 의미합니다.

let genArray: Array<number> = [ 1,2,3,4];
console.log(genArray);

 - T 를 union으로 하게 되면 요소의 타입을 제약 할 수 있습니다.

   Array 타입모다 더 다양한 요소를 넣을 수 있습니다.

let genArrayA: Array<number | string> = [ 1,2,3,4, "5", "6"];

console.log(genArrayA);

 Tuple

 - 배열 요소가 n개로 정해 졌을때 각 요소 별로 type을 지정합니다.

let items: [number, string] = [ 1,"33"];
let items1: [number, string, string] = [ 1,"2", "3"];

 Function 

 호출 시그니쳐를 포함 하도록 정의한 타입 입니다. 

 생성자 

 

 class 

 

 interface 

 


5. type - javascript에서 지원하는 내장 객체 타입

 type 

 설명 

 String

 - String 전역 객체를 이용하여 string타입 으로 할당

 - 객체 타입임으로 valueOf로 값을 확인

let gstring = new String("test");
console.log(gstring.valueOf());

 Number

 - Number 전역 객체를 이용하여 number 타입으로 할당

 - 객체 타입임으로 valueOf로 값을 확인

let gnumber = new Number(1);
console.log(gnumber.valueOf());

 Boolean

 - Bloolean 전역 객체를 이용하여 boolean 타입으로 할당

 - 객체 타입임으로 valueOf로 값을 확인

let gbool = new Boolean(true);
console.log(gbool.valueOf());

댓글 없음:

댓글 쓰기