1. 문제의 발단
취업을 위해 이곳저곳 이력서를 쓰고 여기 보고 저기보고 하고 있는데 다들 'TypeScript' 이야기를 엄청 하는 것 같다. 얼마나 좋은 기술이면 이렇게들 사용하려고 할까? 나도 한번 써보자. 발버둥 쳐보자!
2. TypeScript?
- JavaScript를 이용한 프로그래밍 언어이다. 컴파일 한 후에 JavaScript 코드로 바꿔준다.
- JavaScript는 숫자나 문자간의 계산 같은 경우, 런타임에서 알아서 계산해서 올바른 답을 준다. 하지만 이러한 결과는 간단한 프로젝트의 경우 편리할 수 있지만, 크기가 크면 클수록 디버깅이 너무 어려워진다. 그래서 이런 경우, 에러 메시지를 준다.
- 심지어 위의 경우처럼 타입을 잘 못 쓴경우나, 오타까지도 잡아준다!
3. 어떻게 사용할까요?
- npm install -g typescript
- 당근 node.js 필수
- .tsconfig.json 파일을 생성해서 안에 초기 설정을 넣는다. ts 파일을 js 파일로 컴파일할 때 사용할 설정이다.
{
"compilerOptions" : {
"target": "es5",
"module": "commonjs",
}
}
- ts 파일 자체는 브라우저가 올바르게 읽을 수 없다. 그래서 컴파일 해야한다. tsc -w를 터미널에 입력하면 자동으로 변환된다.
4. 간단한 문법
let name :string = 'hendrix';
name = 111;
// 위의 경우 에러 발생. name은 string 타입으로 설정 되어 있기 때문에 다른 타입은 올 수 없음
let list : string[] = ['a', 'b', 'c'];
list = ['a', 'b', 1]
// 위의 경우 에러 발생. list 안의 요소의 타입은 항상 string 이기 때문!
let name :{ name? : string } = { name: 'hendrix' };
// 위의 경우 ? 로 어떤 타입이 들어갈지 모른다! 라는 것을 표시하였기 때문에 에러는 나지 않는다.
// 마찬가지로 | 연산자나 &도 사용가능하다.
type MyType = string | number;
let hello :MyType = 'world';
// 위 처럼 type을 이용해서 타입 자체를 변수에 할당할 수 도 있다. 대문자로 선언하자.
function func(el: number) :number {
return el + 1;
}
// 위의 함수처럼 함수의 인자의 타입과 결과물의 타입을 설정할 수 도 있다.
type SetType = [string, string, boolean]
// arr 형태로 각 요소의 순서에 따라도 타입을 설정 할 수 있다.
type ListType = {
[ket: string] : string
}
// 글자로 된 모든 object 속성 타입은 string
5. create-react-app으로 만든 리액트 앱에 TypeScript 적용하기
- npm install typescript @types/node @types/react @types/react-dom @types/jest @types/react-router-dom
- . js 파일들을 .tsx로 바꿔준다. (JSX 문법을 이용하는 react는 tsx로 확장자를 변경하는 것이 옳다. 그냥 자바스크립트라면 .ts다)
- 이미 진행된 프로젝트라면 TypeScript에 뜨는 에러들을 문법에 맞게 고쳐준다.
- 당근 컴파일도 해준다.
'Coding > Today I Learned' 카테고리의 다른 글
2022.01.13(Thu.) <CSS를 이용한 애니메이션의 표현> (0) | 2022.01.13 |
---|---|
2022.01.11(Tue.) <일단 쓰면서 배우는 Figma> (0) | 2022.01.11 |
2022.01.06(Thu.) <다시 처음으로 돌아가 알아보는 HTML 태그> (0) | 2022.01.07 |
2021.09.16(Thu.) <AWS 배포의 큰 그림> (0) | 2021.09.16 |
2021.09.14(Tue.) <Git을 이용한 버전관리> (0) | 2021.09.14 |