Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 웹팩
- pushstate
- 클론코딩
- 호이스팅
- webpack
- 이벤트 루프
- 이터러블
- 로드마크
- relatedTarget
- 함수형
- 화살표 함수
- 매클로태스크
- 비동기 작업
- AbortController
- localtunnel
- 호출 스택
- 실행 컨택스트
- debounce
- fetch 취소
- 로컬터널
- 유사배열
- 번들러
- 넘블
- 렉시컬 환경
- Call stack
- hoisting
- JavaScript
- Lexical environment
- 마이크로태스크
- 자바스크립트
Archives
- Today
- Total
내가 보려고 만든 개발 공부 일지
Typescript 타입추론 & 타입단언 본문
TS는 타입이 예상 가능할땐 굳이 타입선언을 안해도 된다. 컴파일러가 타입추론을 하기 때문이다.
그치만 일반적으로 타입을 항상 선언해 준다. 그리고 그 타입에 따라 해당 변수의 속성값을 쓰려고할때 컴파일러 에러가 발생할 수도 있다.
document.body.onclick = (e: MouseEvent): void=>{
e.currentTarget!.nodeName;
}
위와같은 코드가 있다고 할 때, 컴파일러는 currentTarget 이 nodeName 을 가지고 있지 않는다는 에러를 낸다.
나는 currentTarget에 어떤 엘리먼트가 올지 이미 알고 있지만, TS 컴파일러는 저 값이 정확히 뭔지 몰라서 타입추론을 못하기 때문이다.
이럴때 확실하게 컴파일러에게 타입을 알려주는 방법이있다.
const targ = e.currentTarget as HTMLDivElement;
이런 식으로 as 를 사용하여 타입이 뭔지 명시해주는 것이다.
그러나 as 는 any 와 마찬가지로 지양하는것이 좋다. 왜냐면 저들을 남발하게되면 굳이 TS를 쓰는 이유가 없어지기 때문이다.
따라서 꼭 필요한 경우에만 쓰자.
'Typescript' 카테고리의 다른 글
Typescript - 매번 null , undefined 체크의 귀찮음 (0) | 2021.07.02 |
---|---|
Interface vs Type (0) | 2021.07.02 |
Comments