ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 타입스크립트 프로그래밍-2
    프론트엔드/리엑트 2023. 2. 14. 13:38
    728x90

    타입 시스템

     타입시스템(typesystem):

     

    타입 검사기가 프로그램에 타입을 할당하는 데 사용하는 규칙 집합

     

    타입시스템은 보통 두가지로 분류된다.

    명시적으로 알려주는 타입시스템, 자동으로 타입을 추론하는 타입시스템

     

    타입스크립트는 개발자가 직접 선택할 수 있다.

    어노테이션을 이용하면 타입스크립트에 명시적으로 타입을 지정할 수 있다.

    어노테이션은 'value:type' 형태로 쓰이며 타입검사기에 

    value는 타입은 type이야. 라고 알리는 역할을 한다.

     

     

     

     

    ● 어노테이션을 사용하여 명시적으로 타입을 알려줄 때

     

    let a : number = 1   // a는 number

    let b: string = 'hello' // b는 string

    let c : boolean[] = [true,false] // c는 boolean 배열

     

    ● 자동으로 타입을 추론하는 타입시스템

     

    let a  = 1    // a는 number

    let b = 'hellp'  // b는 string

    let c = [true,false]  // c는 boolean 배열

     

    => 어노테이션을 사용하지않아도 타입지정 결과는 달라지지않는다.

         코드의 간결성을 위해 어노테이션은 보통 생략해준다.

     

     

     

    자바스크립트와 타입스크립트의 타입 시스템 비교

     

     

     타입을 결정하는 방법

     

    동적 타입 바인딩(dynamic type binding)이란 자바스크립트가 프로그램을 실행해야만

    특정 데이터의 타입을 알 수 있음을 의미한다.

     

     

    ● 언제 타입을 검사하는가?

     

    컴파일 타임에 코드의 타입을 확인하기 때문에(위의 표를 참고) 코드를 실행하지 않고도 이전 예제 코드에

    에러가 있음을 바로 알 수 있다. 코드를 실행하기 전에 알려준다.

    코드가 컴파일되지 않는 다는 사실은 개발자가 실수를 저질렀음을 뜻한다.

     

    3 + [1] 

    => 에러: [ts] Operator '+' cannot be applied to types '3' and 'number[]' . [2365]

     

     

    ● 에러가 검출되는 시점

     

    타입스크립트는 컴파일 타임에 문법 에러와 타입 관련 에러를 모두 검출한다.

    자바스크립트에서 런타임 에러로 발생했을 많은 에러를 타입스크립트는 컴파일 타임에 검출할 수 있다는 장점이있다.

     

    코드 편집기 설정

    ● tsconfig.json

     

    모든 타입스크립트 프로젝트는 루트 디렉터리에 tsconfig.json 파일이 존재해야한다.

    프로젝트에서 어떤 파일을 컴파일하고, 어떤 자바스크립트 버전으로 방출하는지 등을 정의해준다.

     

    ● tslint.json

     

    탭을 사용할지 공백을 사용할지 등을 결정하는 코딩 스타일 규약

    tslint는 선택 사항이지만 일관된 코딩스타일을 사용하도록 적극권장.

     

     

    출처: 타입스크립트 프로그래밍 책.

    728x90

    '프론트엔드 > 리엑트' 카테고리의 다른 글

    타입스크립트 프로그래밍 -4  (0) 2023.02.20
    타입스크립트 프로그래밍-3  (0) 2023.02.17
    타입스크립트 프로그래밍-1  (0) 2023.02.14
    리엑트-렌더링이란?  (0) 2023.02.09
    리엑트 모달창 drag구현!  (0) 2023.02.08

    댓글

Designed by Tistory.