| Type Assertion!
TypeScript์ ํ์ ํ๋ช ์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ปดํ์ผ๋ฌ์๊ฒ โ๋ด๊ฐ ๋๋ณด๋ค ํ์ ์ ๋ ์ ์๊ณ ์๊ณ , ๋์ ์ฃผ์ฅ์ ๋ํด ์์ฌํ์ง ๋ง๋ผโ ๊ณ ํ๋ ๊ฒ๊ณผ ๊ฐ๋ค
Type Assertion
: ํ์ ์ ๊ฐ์ํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ?? ๋จ, ์ง์ํ๋ ๊ฒ์ด ์ข๋ค. ๐ฉ
โ๏ธ Type Assertion ์์ 1
function jsStrFunc(): any {
return "hello";
}
const result = jsStrFunc();
console.log((result as string).length); // (1)
console.log((<string>result).length);
(1) result as string
: result๋ string์ด์ผ!! string์์ ํ์ธํ๊ธฐ ๋๋ฌธ์ string method๋ฅผ ์ฌ์ฉํ ์ ์๋ค
โ๏ธ Type Assertion๋ฅผ ์ง์ํด์ผ ํ๋์ด์ ! ์์ 2
function jsStrFunc(): any {
return 2; // (2) ๐ฑ์๋์์ ๋ฌธ์์ด์์๋ ์ซ์๋ฅผ ์ง์ ํ ๊ฒฝ์ฐ์๋ ์๋ฌ๋ ๋ฐ์ํ์ง ์๋๋ค;;
}
const result = jsStrFunc();
console.log((result as string).length); // (3)
console.log((<string>result).length); // ์์ as์ ๊ฐ์ ๋ฌธ๋ฒ
(3) ๐ฑ๐ฑ as
๋ฅผ ๋ถํ ํ์
์ ์ฅ๋ดํ๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ์๋ฌ๋ ๋ฐ์ํ์ง ์๋๋ค;; ๋ค๋ง ์คํํ ๊ฒฝ์ฐ undefined
๊ฐ ์ถ๋ ฅ๋๋ค.
โ๏ธ Type Assertion ์์ 3: Type Assertion์ ์ง์ํด์ผ ํ๋ ์ด์ !! ๐ฑ
const wrong: any = 5;
console.log((wrong as Array<number>).push(1)); // ๐ฑ
์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฃฝ์ด๋ฒ๋ ธ์ด!!! ๐ฑ๐ฑ๐ฑ๐ฑ๐ฑ๐ฑ
โ๏ธ Type Assertion ์์ 4: !
๋ฅผ ๋ถํ๋ฉด ํ์ ํด
function findNumbers(): number[] | undefined {
return undefined;
}
const numbers = findNumbers()!;
numbers.push(2); // ๐ฑ numbers๋ number[]์ผ์๋ ์๊ณ ,
// undefined ์ผ์๋ ์๊ธฐ ๋๋ฌธ์
// push()๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๋ฌ ๋ฐ์.
๐
!
๋ฅผ ๋ถํ๋ฉด ํ์ ํด๋ฅผ ํํ. ์ฆ, numbers๋ ๋ฐฐ์ด์์ ํ์ ํ๋ฏ๋ก push๋ฅผ ์ฌ์ฉํ ์ ์์ด! ์ฐธ๊ณ ๋กas
๋ ์ฅ๋ดํด!๋ฅผ ํํ.
โ๏ธ Type Assertion ์์ 5
const myCanvas = document.getElementById("main_canvas") as HTMLCanvasElement;
const button = document.querySelector("class")!;