타입스크립트에서

let 제목 = document.querySelector('#title');

// 에러 발생
제목.innerHTML = '반가워요';

스크린샷 2022-08-25 오전 10.37.51.png

제목의 타입이 Union type 이다. Elment | null

왜 null 일수 있지? 가끔 html 요소를 잘못 찾게되면 null을 가질 수 있기 때문에…

let 제목 = document.querySelector('#title');

// 1. narrowing
if(제목 != null){
	제목.innerHTML = '반가워요';
}

// 2. narrowing
if(제목 instanceof Element){
	제목.innerHTML = '반가워요';
}

// 3. narrowing (as로 사기치기)
let 제목 = document.querySelector('#title') as Element;

// 4. narrowing (optional chaining)
제목?.innerHTML = "반가워요";

// 5. tsconfig가서 strict 삭제
let 링크 = document.querySelector('.link');
// DOM 타입도 Narrowing을 해줘야한다.
if(링크 instanceof HTMLAnchorElement){
	링크.href = '<https://kakao.com>';
}

a 태그의 경우 HTMLAnchorElement라고 정확히 narrowing을 해야한다.

타입스크립트에서 제공하는 DOM 타입들을 정확히 표현.

스크린샷 2022-08-25 오전 10.46.26.png

이벤트 리스너

let 버튼 = document.querySelector('#button');
// narrowing
버튼?.addEventListener('click', function(){
	
})