tsconfig.json 구성을 살펴봅시다. 많은 것이 있지만 주요한 속성 4가지에 대해 알아보겠습니다. 다른 tsconfig.json 파일을 상속받아서 설정을 재사용할 수 있게 해주는 "extends"와 TS 컴파일러의 옵션을 지정하는 "compilerOptions"와 프로젝트 파일내에서 컴파일한 파일을 지정하는 속성인 "include", 제외할 파일들을 지정하는 "exclude"가 있습니다. compilerOptions는 내용이 많으니 마지막에 설명하겠습니다. { // 다른 tsconfig.json 파일을 상속받아서 설정을 재사용할 수 있게 해주는 속성 "extends": "./configs/base.json", // TS 컴파일러의 옵션들을 지정 "compilerOptions": { "target"..
타입스크립트 환경에서 자바스크립트로 만들어진 패키지를 사용하다 보면 패키지 설치 후 "npm i 패키지이름" 바로 "npm i @types/패키지이름 -D"와 같은 명령어를 통해 추가 설치해 작업한 적이 있습니다. (사실 매번 그랬죠.) 당시에는 타입스크립트를 사용할 때 이 과정이 필요하다고 만 알고 넘어갔었어요. 저 명령어가 하는 일이 뭔지, 확 와닿진 않았습니다. 하지만 타입스크립트를 더 공부하면서 패키지 타입선언이라는 것을 배우게 됐고, 저 명령어가 패키지 타입선언코드를 따로 작성할 필요 없이 이미 개발자들이 만들어 놓은 코드를 사용하는 거 구나! (무릎을 탁!) 이해해 블로깅하게 되었습니다. 패키지 타입선언 ? 타입스크립트 환경에서 자바스크립트로 만들어진 패키지를 사용하려면 사실 패키지 타입 또한..
타입 별칭 Alias Type 키워드는 타입의 별명을 부여하는 의미를 가졌습니다. 새로운 타입을 생성하는 interface 와는 개념적 차이가 있습니다. 인터페이스와 큰 차이점은 타입의 확장성 여부입니다. 가능한 확장이 가능한 interface로 선언하는 것을 추천한다는 입장이 많지만 이것 또한 프로젝트 상황에 맞게 선택하고 통일하는 것이 더 바람직할 것입니다. type User = string | number; type User1 = { name: string } 함수 명시적 this 타입 Function hello (this:Cat, message:string){ Console.log(`hello ${this.name},${message}`) } hello.call(call,”mess”); 오버로딩 ..
열거형 타입(Enum Type) 타입스크립트에서는 특정 값의 집합을 정의할 때 사용됩니다. 종류로 문자형 열거형과 숫자형 열거형을 지원합니다. 디폴트 값으로 숫자형을 사용하며, 각 값은 자동으로 0부터 시작하여 1씩 증가합니다. 또 숫자형 열거형은 값을 통해 키를 얻을 수 있는 역 매핑 기능이 있습니다. //숫자 열거형 enum Color Red, //값을 지정하지 않으면 자동으로 0 부터 시작해 1씩 증가합니다. Green, //1 Blue=4, } //문자 열거형 enum Direction { Up = "UP", Down = "DOWN", Left = "LEFT", Right = "RIGHT", } //숫자형만 존재하는 역 매핑 Reverse mapping enum Enum { A } let a = ..
타입 호환성(type compatibilty) typeScript 의 특징으로 타입 호환성(type compatibilty)가 있습니다. 이는 구조적 서브타이핑(structural subtyping)을 기반으로 하며 y가 최소한 x 와 동일한 멤버를 가지고 있다면 x와 y는 호환된다라는 말입니다. 이와같은 규칙은 y와 x가 완전히 같지 않더라도 계산에 필요한 모든 프로퍼티를 포함하고 있어 런타임 상에 정상적으로 동작한다면 이를 개발자 의도에 맞게 유연하게 대응하여 타입 호환성을 지원하는 것이 더 좋다는 입장을 반영한 개념입니다. 이와 반대의 개념인 명목적 서브타이핑(nominal subtyping) 이 있습니다. 그리고 이 구조적 서브타이핑 방식은 "만약 이름모를 새가 오리와 같은 요소를 가지고 있다면 ..
TypeScript의 개념과 등장배경 ? JS(javaScript) 기반에서 고정된 타입(정적타입) 문법을 추가한 컴파일 언어입니다. 타입이 자유자재로 바뀔 수 있는 JS에서 타입을 자유자재로 변경하지 못하도록 빡빡하게 만든 언어가 바로 타입스크립트(TypeScript)라고 할 수 있습니다. 왜 JS보다 더 엄격한 타입스크립트가 그 이후에 나왔을 까요? 왜냐하면 에러발생률을 현저히 줄일 수 있기 때문입니다. JS는 타입지정이 동적이라 매번 타입을 써줄 필요가 없기 때문에 누구보다 빠르게 남들과는 다르게 코드를 작성할 수 있는 장점이 있습니다. 하지만 빠르게 프로그래밍을 하다 보면 종종 다른 타입을 함께 연산하는 실수가 생기곤 합니다. 또 타입지정이 자유롭기 때문에 런타임까지 타입에 대한 결정을 끌고 갈 ..