๐ฉ๐ป Language/TypeScript
ํ์ ์คํฌ๋ฆฝํธ(TypeScript) - '?' , '!' ์ ์๋ฏธ๋ ๋ฌด์์ผ๊น?
kongmi
2024. 10. 22. 10:19
ํ์ ์คํฌ๋ฆฝํธ ํ์ ์ ์๋ฅผ ๋ณด๋ค๋ณด๋ฉด ์ข ์ข ?๊ณผ !๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ฃผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์จ์ ๊ฐ๋ฐํ๋ ์ ์๊ฒ๋ ์กฐ๊ธ์ ์์ํ ํํ์์ด๋ผ ๊ตฌ์ฒด์ ์ผ๋ก ๋ฌด์์ธ์ง ์ฐพ์๋ณด์์ต๋๋ค.
๊ฐ๋
!์ ?๋ ๋ณ์๊ฐ ๊ฐ์ ์กด์ฌ ์ฌ๋ถ์ ๊ด๋ จ๋ ํค์๋๋ก, ์ฝ๋์์ ์์ ์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
!
- ๊ฐ์ด null์ด๋ undefined๊ฐ ์๋์ ํ์ ํ ๋ ์ฌ์ฉํฉ๋๋ค.
- ํ์ ์คํฌ๋ฆฝํธ๋ ๋ณ์์ null์ด๋ undefined๊ฐ ๋ค์ด๊ฐ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ์ฃผ์ง๋ง, !๋ฅผ ๋ถ์ด๋ฉด "์ด ๊ฐ์ ์ ๋ null์ด๋ undefined๊ฐ ์๋์ผ! ๋ผ๊ณ ์ปดํ์ผ๋ฌ์๊ฒ ์ ๋ฌ(?)ํ๋ ์ญํ ์ ํฉ๋๋ค.
let value: string | undefined;
value!; // ์ด ์์ ์ undefined๊ฐ ์๋์ ๋ณด์ฅํ์ง๋ง ์ค์ ๋ก undefined์ผ ๊ฒฝ์ฐ ๋ฐํ์์์ ์๋ฌ๊ฐ ๋ฐ์
?
- ๊ฐ์ด ์์ ์๋ ์๊ณ ์์ ์๋ ์์์ ๋ํ๋ ๋๋ค.
- ๊ฐ์ฒด์ ์์ฑ ๋๋ ํจ์์ ํ๋ผ๋ฏธํฐ๊ฐ ์ ํ์ ์ผ ๋ ์ฌ์ฉํฉ๋๋ค. ์ฆ, ํด๋น ์์ฑ์ด๋ ํ๋ผ๋ฏธํฐ๊ฐ ์์ด๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
์์) ๊ฐ์ฒด์ ์์ฑ
interface User {
name: string;
age?: number; // ์ ํ์ ์์ฑ
}
const user1: User = { name: "Yang" }; // age๋ ์ ํ์ ์์ฑ์ผ๋ก ์์ด๋ ์๋ฌ x
const user2: User = { name: "Kim", age: 20 };
์์) ํ๋ผ๋ฏธํฐ
function greet(name: string, age?: number) {
console.log(`Name : ${name}`);
if (age !== undefined) {
console.log(`Age : ${age}`);
}
}
greet("Yang"); // O
greet("Kim", 30); // O
์ ๋ฆฌ
- !๋ ๊ฐ์ด null์ด๋ undefined๊ฐ ์๋์ ๊ฐ์ ํฉ๋๋ค.
- ?๋ ๊ฐ์ด ์ ํ์ ์์ ์๋ฏธํ์ฌ ์์ ์๋ ์์์ ๋ํ๋ ๋๋ค.