You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
타입스크립트의 정제
책에서 정제라는 표현을 쓰고 있는데
값이 한번 정제가 된 경우, 함수를 거칠때 마다 타입을 정제해야 한다면 비용이 많이 들기 때문에
정제를 무효화하지 않고 유지한다.
그런데 객체의 속성을 그대로 사용하면 함수를 거친이후 해당 속성이 삭제될 가능성이 있다.
그러므로 구조분해할당 등 지역변수를 사용하는 것이 타입의 유지 측면에서는 일관될 수 있다.(그러나 해당 변수의 값이 원본과 달라질 수 있는 가능성이 있음)
const { name } = props
지역변수
속성을 그대로 사용
name
props.name
별칭을 사용하는 것이 사람에게도 코드 읽기의 어려움을 증가시키지만, 타입스크립트의 타입 좁히기에도 어려움을 준다.
25. 비동기 코드에는 콜백 대신 async 함수 사용하기
callback hell === pyramid of doom
version
new
ES2015
프로미스
ES2017
async await
런타임에 어떻게 되든 상관없이 async, await으로 작성하면 컴파일 해준다.
ES2015(es6)으로 컴파일하면 generator를 이용해서 __awaiter라는 함수를 만들어냄
ES2015 이전 버전으로 컴파일하면 generator가 도입되기 전이기 때문에 __generator를 만들어냄
콜백 스타일 보다는 async, await 사용 권장(타입 구문이 적게 필요)
프로미스를 직접 생성해서 사용하기 보다는 async, await 사용 권장(덜 복잡하고 async는 무조건 Promise를 반환하므로 타입 추론이 쉽다.)
함수는 어떨 때는 동기로, 어떨 때는 비동기로 사용되어서는 곤란하다.
반(harf)동기: 반환 값을 예측할 수 없다 => 함수의 리턴값은 일종의 약속(계약)인데 그것이 위반됨
19. 추론 가능한 타입을 사용해 장황한 코드를 방지
20. 다른 타입에는 다른 변수 사용하기
21. 타입 넓히기
22. 타입 좁히기
23. 객체 생성하기
The text was updated successfully, but these errors were encountered: