๊ด€๋ฆฌ ๋ฉ”๋‰ด

Bin's Blog

์˜ค๋Š˜์˜ TypeScript ๋ณธ๋ฌธ

TypeScript

์˜ค๋Š˜์˜ TypeScript

hotIce 2023. 7. 21. 07:15
728x90

 ๐Ÿ“š ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ HTML ๋ณ€๊ฒฝ๊ณผ ์กฐ์ž‘ํ•  ๋•Œ ์ฃผ์˜์ 

๐Ÿ‘‰ h4 ์•ˆ์˜ ๊ธ€์ž๋ฅผ ๋ฐ”๊ฟ”๋ณด์ž 

<h4 id="title">์•ˆ๋…•ํ•˜์„ธ์š”</h4>

๐Ÿ‘‰ selector๋กœ html์„ ์ฐพ์œผ๋ฉด ํƒ€์ž…์ด Element | null์ด๊ธฐ ๋•Œ๋ฌธ์— html์„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด null์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์„ ํ•ด๊ฒฐํ•ด์ค˜์•ผํ•œ๋‹ค.

 

1๏ธโƒฃ ํ•ด๊ฒฐ์ฑ… (Type Narrowing)

let ์ œ๋ชฉ = document.querySelector("#title");
if (์ œ๋ชฉ !== null) {
  ์ œ๋ชฉ.innerHTML = "๋ฐ˜๊ฐ€์›Œ์š”"
}

 

2๏ธโƒฃ ํ•ด๊ฒฐ์ฑ… (instanceof)

if (์ œ๋ชฉ instanceof Element) {
  ์ œ๋ชฉ.innerHTML = "๋ฐ˜๊ฐ€์›Œ์š”"
}

 

3๏ธโƒฃ ํ•ด๊ฒฐ์ฑ… (as)

// ์ด ์š”์†Œ๋Š” element๋ผ๊ณ  ์‚ฌ๊ธฐ์ณ์ฃผ์„ธ์š”
// null์ด ๋“ค์–ด์™€๋„ element type๊ฐ€๋Šฅ
// ๋น„์ƒ์‹œ์— 100%ํ™•์‹ ์ด ์žˆ์„๋•Œ
let ์ œ๋ชฉ1 = document.querySelector("#title") as Element;
์ œ๋ชฉ.innerHTML = "๋ฐ˜๊ฐ€์›Œ์š”"

 

4๏ธโƒฃ ํ•ด๊ฒฐ์ฑ… (optional chaining)

// ์ œ๋ชฉ์— innerHTML์ด ์žˆ์œผ๋ฉด ์ถœ๋ ฅํ•ด์ฃผ๊ณ 
// ์—†์œผ๋ฉด undefined ๋ฑ‰์–ด๋‚ด (optional chaing)
let ์ œ๋ชฉ = document.querySelector("#title");
if (์ œ๋ชฉ?.innerHTML !== undefined) {
  ์ œ๋ชฉ.innerHTML = "๋ฐ˜๊ฐ€์›Œ์š”"
}

 

๐Ÿ‘‰ a ํƒœ๊ทธ์˜ href ์†์„ฑ์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

<a href="naver.com">๋งํฌ</a>

๐Ÿ‘‰ href, style, css๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด Element๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ HTMLAnchorElement์„ ํ†ตํ•ด์„œ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค.

let ๋งํฌ = document.querySelector('#link');
if (๋งํฌ instanceof HTMLAnchorElement) {
  ๋งํฌ.href = "https://www.naver.com/"
}

 

๐Ÿ‘‰ 3๊ฐœ์˜ ๋งํฌ๋ฅผ ๋ชจ๋‘ ๋ฐ”๊พธ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

<a class="naver" href="naver.com">๋งํฌ</a>
<a class="naver" href="naver.com">๋งํฌ</a>
<a class="naver" href="naver.com">๋งํฌ</a>

๐Ÿ‘‰ querySelectAll()์„ ํ†ตํ•ด์„œ naver๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง„ ์• ๋“ค์„ ๋‹ค ๋ถˆ๋Ÿฌ์˜ค๊ณ  forEach()๋ฌธ์„ ํ™œ์šฉํ•œ๋‹ค.

๋งํฌ์Šค.forEach((link) => {
  if (link instanceof HTMLAnchorElement) {
    link.href = "https://kakao.com"
  }
})

 

728x90

'TypeScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์˜ค๋Š˜์˜ TypeScript  (0) 2023.07.19
์˜ค๋Š˜์˜ TypeScript  (0) 2023.07.17
์˜ค๋Š˜์˜ TypeScript  (0) 2023.07.16
์˜ค๋Š˜์˜ TypeScript  (0) 2023.05.09
์˜ค๋Š˜์˜ TypeScript  (0) 2023.05.08