SeSac (2021-08 ~ 2021-12)/TS

타입스크립트

배워도끝이없네 2021. 12. 16. 15:32

자바스크립트와 파이썬개발자의 공통점은 마음이 조마조마하다 (동적타입언어이기때문에)

 

쓰는 이유

1. 실수를 줄여준다.

2. suggest해준다.

3 . 다형성 (이것은 호불호가 있다. 자바스크립트가 함수형 언어이기 떄문)

4. 코딩스타일 (ESLint, Prettier)

 

결론: "실용성"

 

타입스크립트는 @@.ts파일을 TSC(compiler) 돌리면 -> @@.js파일이 떨어진다.

컴파일러가 작동하는과정에서 type checker라는것이 동작해 오류를발생시킨다 (js파일로는 떨어진다)

빌드할떄 typescript에 오류가 있으면 빌드를 시키지 않도록 설정할수 있다(webpack등등에서)

tslint에서도 설정 가능

 

타입체커라는것이 핵심이다.

 

타입스크립트의 컴파일러는 정확히 말하면 프리컴파일러다.

 

컴파일러안에서는 Parising을 해서 Abstract Syntax Tree(AST)를 떨군다.

 

이 AST를 가지고 ByteCode를 떨군다. (실행시 기계어로 바꾸는것 ->평가-> 실행(타입을 실행해본다))

 

JS에서 해야하는부분도 TSC에서 중복해서 실행되는 부분들이 있기 떄문에 속도가 좀 느릴 수 있지만 안전하다.

 

이런 타입을쓰려면 다른언어를 쓰지 왜 타입스크립트를 쓰냐?

 

자바스크립트는 어디에서든 사용할 수 있기 때문에 그만큼 가치가 있어서 타입을 입혀서 쓰는것이다.

 

타입스크립트를 사용할때 준수사항!

var등등을 쓰지말자..

es2015이상을 쓰자 (es5로 쓰지말구..)

순수함수를 쓰자

타입은 기계가 명확히 알수 없는곳은 모두 붙이자.

let i ; 이런식의 코드는 별로 좋지않다. 그리고 쓰게된다면 타입을 꼭 붙이도록 하자!

 

순수함수를 이용해서 사이드이펙트를 줄이려는 이유는 ? ->유닛테스트를 만들기 편리하고, 오류를 줄일 수 있기 때문이다.

 

JS는 V8엔진이다. (디노 노드 크롬 오페라)

chakra는 edge가 쓰고있다.

spydermonkey 는 파이어폭스

JSCore는 사파리가 쓰고있다.

 

TS에서 const와 let의 차이

-> const a= 0는 a의 타입은 0이다. 

 

타입리터럴은 정말 많이쓴다 

let b : 0|10 - 0;

 

Type의 가장 최상위는?

Unkown

 

이것을 확장받은것이 any

any에서 확장된것이 null

또는 void

void에서 확장된것은 undefined

 

any에서 있는 다른타입들은

string, number, boolean, bigint, symbol object={}

object를 확장한것이 Object

 

enum은 string과 number를 확장한 타입이다.

 

symbol을 확장해 unique symbol이 나온다.

 

node가 빌드될떄 OS나 CPU에 따라서 다르게 작동하는데

m1같은경우 ts에서 bigint를 사용할떄 es2020으로 설정해야 사용할 수 있다.

 

any와 unknown의 차이

unknown은 타입을 쓰기 전까지 타입을 모르는것이고

any는 어느타입이던 허락하는 것이다.

 

unknown은 값을 직접 쓰는것이 아니라 타입을 비교할때 쓰는경우에 쓴다.

 

unknown은 용서하지만 any는 용서할수없다! 쓰지말자 (가급적)

 

unique symbol은 const로 적어야한다.

 

symbol은 unique하기때문에 이렇게 쓴다