-
[이펙티브 타입스크립트] 1장. 타입 스크립트 알아보기웹/TypeScript 2023. 5. 12. 15:56
Typescrit 타입스크립트란?
성숙하고 효율적으로 변모한 자바스크립트의 완성도를 채워줄 마지막 퍼즐
아이템 1 . 타입 스크립트와 자바스크립트의 관계 이해하기타입 스크립트는 자바스크립트의 상위집합(superset)이다
타입 체커를 통과하면서도 런타임 오류를 발생시키는 코드는 충분히 존재할 수 있다.
즉, 타입 검사는 런타임에서 발생하는 동적인 문제들을 모두 해결해주지는 않습니다.
예시)
const name = ['aaaa', 'bbbb']; // 런타임에러 console.log(name[1].toUppercase()); // 메소드 오타 console.log(name[2].toUpperCase()); // name[2] undefined // 정상작동 console.log(name[1].toUpperCase()); // "BBBB" console.log(name[0].toUpperCase()); // "AAAA"
타입 스크립트 타입 시스템은 전반적으로 js 동작 모델링
아이템 2. 타입 스크립트 설정 이해하기
TS 타입 정보를 가질 때 가장 효과적이기 때문에 되도록 noImplicitAny를 설정해야 한다.
noImplicitAny란?
TypeScript 컴파일러 옵션 중 하나로, 명시적으로 타입을 지정하지 않은 변수나 함수 매개변수 등에 대해 any 타입을 허용하지 않는 옵션입니다. 이 옵션을 사용하면 암시적으로 any 타입이 지정되는 경우 컴파일러가 경고를 발생시켜 명시적인 타입 지정을 유도합니다.예시)
//경고 function add(x, y) { return x + y; } // 정상 function add(x: number, y: number): number { return x + y; }
아이템 3. 코드 생성과 타입이 관계없음을 이해하기
TS 컴파일러의 역할
1. 트랜스파일 : 브라우저에서 동작할 수 있도록 TypeScript 소스 코드를 JavaScript로 변환
2. 코드의 타입 오류 체크
단, 서로 독립적으로 작동
따라서, 타입 오류가 있는 코드도 컴파일 가능하다.런타임에는 타입 체크가 불가능하다.
런타임(runtime)이란?
컴퓨터 프로그램의 실행 과정에서 프로그램이 실제로 동작하는 시간을 의미합니다. 즉, 프로그램이 컴파일되어 기계어로 번역된 후 실행되는 과정에서의 시간적인 부분을 의미합니다.
런타임은 프로그램의 실행에 필요한 여러 가지 요소들을 포함합니다. 예를 들어, 메모리 할당, 변수 초기화, 함수 호출, 오류 처리 등의 과정은 모두 런타임에 발생합니다. 이러한 과정은 컴파일 단계에서 처리되지 않기 때문에, 런타임 환경에서 직접 처리해야 합니다.
또한, 런타임은 프로그램이 실행되는 환경에 따라 달라질 수 있습니다. 예를 들어, 운영체제나 하드웨어의 종류, 네트워크 환경 등에 따라 런타임 환경이 달라지기 때문입니다.
따라서, 런타임은 프로그램의 실행 과정에서 매우 중요한 역할을 합니다. 프로그램의 성능과 안정성을 결정하는 중요한 요소 중 하나이며, 개발자는 이러한 런타임 환경을 고려하여 프로그램을 설계하고 구현해야 합니다.- 또한 타입과 타입 연산은 런타임에 영향을 주지 않는다.
- 함수 오버로딩 불가 : 타입스크립트에서는 타입과 런타임의 동작이 무관하기 때문
아이템 4. 구조적 타이핑에 익숙하기
javascript는 본질적으로 duck Typing 기반이다.
덕 타이핑(duck typing)은 동적 타입 언어에서 변수나 객체의 타입을 판단하는 방식 중 하나입니다. "오리처럼 걷고, 오리처럼 꽥꽥 울면 그것은 오리다"라는 문구에서 영감을 받아 이름이 지어졌습니다.
덕 타이핑은 객체의 타입을 명시적으로 선언하지 않고, 객체의 속성과 메서드가 사용 가능한지 여부로 객체의 타입을 결정합니다. 즉, 객체가 특정한 타입에 해당하는지 여부는 객체가 갖고 있는 속성과 메서드에 따라 판단됩니다.타입스크립트가 이를 모델링하기 위해 구조적 타이핑을 사용함을 이해해야 한다.
아이템 5. any 타입 지양하기
any를 사용하더라도 위험성을 알고 써야 한다.
any 타입은 코드 리팩토링 때 버그를 감춘다.
any는 타입 설계를 감춘다.
any는 타입 시스템의 신뢰도를 감춘다.'웹 > TypeScript' 카테고리의 다른 글
[이펙티브 타입스크립트] 2장. 타입스크립트의 타입 시스템 (2) (0) 2023.06.01 [이펙티브 타입스크립트] 2장. 타입스크립트의 타입 시스템 (0) 2023.05.30 [TypeScript] useStrict을 사용해야 하나요? + readonly, 추론 가능한 타입, as const 단언문 (0) 2023.03.22 [TypeScript] type과 interface 차이,타입 집합 (0) 2023.03.22 [TypeScript] Js와의 관계, 타입 구문, 타입 작성 방법 (0) 2023.03.22