TypeScript로 Html 조작 가능하다.
document.getElementById()를 TS에서 어떻게 쓰는지 알아보자
1. html을 준비
2. Null을 더욱 세세하게 잡아주는 strict 추가
이제 TS를 이용해서 HTML 조작을 해보겠습니다.
.TS 조작하기
<H4>안의 글자를 TS로 바꿔보자
ts는 애매한 변수보다 확정적인 타입을 좋아한다.
제목은 null일 수 있습니다.
HTML 조작시 narrowing하는 방법 5가지!
narrowing이란?) TypeScript에서 값의 타입을 좁혀가는 과정을 말합니다. 이는 Union 타입이나 any와 같은 포괄적인 타입에서 특정한 세부 타입으로 좁혀서 TypeScript가 더 정확하게 타입을 추론할 수 있도록 하는 방법입니다.
1.
앞에서 말했듯이 ts는 애매한 타입을 싫어해서
h4의 글자를 바꾸려면 narrowing을 잘 해야함.
제목의 변수라 null이 아니라면 '반가워요'를 해주세요
를 기입 시키면됨.
2. instanceof 연산자
가장 많이 쓰게될 instanceof Element이다.
이 부분에서 왼쪽 제목(오브젝트) 은 오른쪽 Element(클래스명)은 의 자식이냐(인스턴스냐) 확인 할 수 있다.
맞다면 True를 내뱉게된다.
3. as로 확인하기
document.querySelector("#title") 이 요소는 Element; 타입이라고 간주해주세요.
라는 느낌이다.
처럼 title이 아닌 다른 값으로 넣어도 무조건 Element라고 간주가 된다.
다만. as는 비상시 쓰거나 100% 확신을 할 때 사용한다.
자주 사용하면 TS의 의미가 없음
4. 오브젝트에 붙이는 ?. 사용
이렇게 제목.innerHTML에 ? 를 붙일 수 있는데
제목.innterHTML
왼쪽에있는 오브젝트 자료의 무언가를 뽑아서 자료를 변경할 수 있는데.
제목?. 을 하게되면 . 이랑 같지만 조건이 붙게된다.
1. 제목에 innerHTML이 있으면 출력해주고
2. 없으면 undefined를 출력하라는 뜻
(optional chaning) 이라는 문법이다.
이렇게 narrowing이 가능하다.
5. 타입스크립트를 거부하기
strictNullChecks 를 false로 바꿔주면 strict 모드가 꺼져서 NULL를 쉽게 잡지 않는다.
6. <a>태그의 href 속성내용을 바꿔보자
link의 naver.com 를 카카오로 변경해보자
원래 이렇게 하면되는데 링크.href가 null일 수 있다라며 TS는 잡게된다.
이걸 if문으로 narrowing해줘야되는데,
href의 a타입은 필요한 정확한 타입명이있어서 오류가 나게 된다.
HTMLAnchor라는 정확한 명이 있는데.
정상적으로 작동된다.
타입스크립트가 제공하는 html 기본 제공하는 타입이 있는데
Element타입을 상속 받아
HTMLAnchorElement타입
HTMLHeadingElement타입
HTMLButtonElement 타입 등 등 상속받아 사용하는 타입이있다.
Element는 정의 안되어있는 광범위 한 타입인데.
HTMLAnchorElement은
href, style, class 이런거 쓸 수 있어요~~~
HTMLButtonElement 타입은 ~~~ 쓸 수 있어요 등등
상세하기 정의되어있다.
결국, a의 세부속성을 정의하듯이
element의 상세한 narrowing을해야 ts에서 세부속성을 잘 정의해줄 수 있다.
즉,
<button> 태그면 HTMLButtonElement
<h1> 태그면 HTMLHeadingElement 등등 쓴다고 알아만 두면 된다.
.. <태그>마다 정해져있음
7. 타입스크립트에서 eventListener 부착하는 법
addEventListener로 이벤트를 추가할 수 있는데
버튼에 narrowing이 또 필요하다.
버튼?.addEventListener
버튼에 addEventListener 가능하면 해주고 아니면 undefined를 뱉으라는 말
이것도 narrowing으로 인정해준다.
'📜✏️노트 자리없어서 적는 IT 지식📜✏️' 카테고리의 다른 글
포트폴리오 제작 (0) | 2025.02.25 |
---|---|
포트폴리오 기획 & 제작 일지 (1) | 2025.02.23 |
타입스크립트(TypeScript) 핵심 9가지 문법 공부하기 😀 (0) | 2025.01.15 |
컴퓨터 정보 보안 - 1주차 공부 (0) | 2024.11.25 |
컴퓨터비전(computer vision) - 6주차 (0) | 2024.11.24 |