타입스크립트에서 타입을 별도로 선언하는 방법으로는 interface와 type alias가 있는데 이 둘에 대해서 간단하게 알아보려고 합니다. 타입을 표현할 때 interface는 reference type의 타입을 표현한다. type alias는 primitive type, reference type 타입을 모두 표현할 수 있다. 타입을 중복 정의할 때 interface는 선언 병합(declaration merging)이 된다. type alias는 에러가 발생한다. 타입을 확장할 때 interface는 extends 키워드를 사용한다. type alias는 &(intersection) 연산자를 사용한다. 내부 동작을 제외하고 사용하는 관점에서는 이런 차이들이 있는 것 같습니다. 그래서 뭘 쓰면 좋을..
보통 개발환경 세팅을 할 때 CRA(Create-React-App), Vite, CNA(Create-Next-App)과 같이 간단하게 프로젝트를 구성할 수 있는 방법을 많이 사용하다보니 tsconfig.json 파일을 직접 작성할 경우가 많이 없었던 것 같습니다. 혹은 TypeScript만으로 프로젝트를 한다고 해도 tsc -init과 같은 명령어를 이용해서 세팅하고 자세히 들여다 보는 경우가 없어서 tsconfig.json 파일의 옵션들에 대해서 제대로 알기가 어려웠는데 이번에 react-world 프로젝트를 진행하면서 다시 찾아보게 되었습니다. 아래 소스코드는 react-world 프로젝트에서 작성한 tsconfig.json 파일입니다. // tsconfig.json { "compilerOptions..
never 타입 // 이 함수는 반환값을 void로 추론하지만 never을 사용할 수 있다. // 에러를 출력하거나 절대 반환값이 없다는 의미 function generateError(message: string, code: number): never{ throw {message, errorCode: code}; } generateError('An error occured', 500); tsc --watch tsc -W 타입스크립트 파일을 지켜보면서(watch) 소스코드에 변화가 생기면 컴파일한다. tsc --init으로 tsconfig.json을 생성후에 tsc, tsc --watch, tsc -W 명령어로 폴더의 모든 타입스크립트 파일을 컴파일한다. tsconfig.json exclude : 컴파일에..
자바스크립트는 런타입에 타입이 결정되는 동적 타입 타입스크립트는 런타임전에 개발 단계에서 타입이 결정되는 정적 타입 브라우저는 자바스크립트만 이해할 수 있기 때문에 타입스크립트를 실행하려면 자바스크립트로 컴파일을 해야한다. 타입 추론(type reference) 타입스크립트는 스스로 타입을 추론한다. const number1 = 5; // number1의 타입은 5 let number2 = 2.5; // number2의 타입은 number // 따로 타입을 지정해 줄 필요가 없다, 하지만 변수를 먼저 선언하고 // 나중에 값을 할당하는 경우에는 지정하기도 한다. let number3: number; number3 = 5; 타입스크립트는 타입을 잘못 사용하고 있는지 확인하고 에러를 통해 알려준다. cons..