티스토리 뷰
타입스크립트로 HTML변경과 조작
- querySelector
Q. union type이라서 오류가 날 때
A. narrowing 해줘야함(타입 하나로 확정)
var 제목 = document.querySelector('#title');
// 제목.innerHTML = '반가워요'; // let 제목: Element | null
// => union type이라서 오류남 => narrowing 해줘야함(타입 하나로 확정)
1. 해결방법 1
if (제목 !== null) {
제목.innerHTML = '반가워요';
}
해결방법 2 - instanceof
if (제목 instanceof Element) {
// object instanceof class : object가 class의 인스턴스(자식)인가? true/false
제목.innerHTML = '반가워요';
}
해결방법 3 = optional chaining
if (제목 === null || 제목 === void 0 ? void 0 : 제목.innerHTML) {
제목.innerHTML = '반가워요';
}
var 링크 = document.querySelector('.link');
// if (링크 instanceof Element) { // 정확한 타입명 필요
if (링크 instanceof HTMLAnchorElement) {
링크.href = 'https://kakao.com';
}
- eventListener
var 버튼 = document.querySelector('#button');
버튼 === null || 버튼 === void 0 ? void 0 : 버튼.addEventListener('click', function () { });
---- 문제 ----
더보기
// 1. 버튼을 누르면 이미지를 바꿔봅시다.
// <index.html>
// <img id="image" src="test.jpg">
// 이미지를 new.jpg 라는 이미지로 바꾸고 싶으면 자바스크립트 코드를 어떻게 짜야할까요?
var 변경할이미지 = document.querySelector('#image');
if (변경할이미지 instanceof HTMLImageElement) {
변경할이미지.src = 'new.jpg';
}
// 2. 3개의 링크가 있는데 이 요소들의 href 속성을 전부 https://kakao.com으로 바꿔봅시다.
// <index.html>
// <a class="naver" href="naver.com">링크</a>
// <a class="naver" href="naver.com">링크</a>
// <a class="naver" href="naver.com">링크</a>
var 변경할링크 = document.querySelectorAll('.naver');
변경할링크.forEach(function (link) {
if (link instanceof HTMLAnchorElement) {
link.href = 'https://kakao.com';
}
});
'Language > TypeScript' 카테고리의 다른 글
| [TypeScript] object 타입, interface (0) | 2023.07.11 |
|---|---|
| [TypeScript] class 타입 (0) | 2023.07.11 |
| [TypeScript] Literal Types (0) | 2023.07.11 |
| [TypeScript] type 키워드, object readonly (0) | 2023.07.11 |
| React에서 TypeScript 사용2 - redux (0) | 2023.07.03 |
댓글
