1๏ธโฃ ๊ธฐ๋ณธํ์
: number
, string
, boolean
, undefined
, null
โ๏ธ number
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
let big: bigint = 100n;
โ๏ธ string
let color: string = "blue";
color = "red";
let name: string = `april`;
let age: number = 35;
let sentence: string = `Hello, my name is ${name}.
I'll be ${age + 1} years old next month.`;
โ๏ธ boolean
let isDone: boolean = false;
โ๏ธ undefined
undefined
: ๊ฐ์ด ์๋์ง ์๋์ง ์ ํด์ง์ง ์์ ์ํ, ํ
ํ
๋น์๋์ง ์๋์ง ๊ฒฐ์ ๋์ง ์์ ์ํ
let name: undefined; // ๐ฉ์ด๋ฐ์์ผ๋ก ํ ๋นํ์ง ์์
let age: number | undefined; // number ๋๋ undefined์ ํ ๋นํ ์ ์๋ค
age = undefined;
age = 21;
โ๏ธ null
null
: ํ
ํ
๋น์๋ค
let person: null; // ๐ฉ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๋ฐ์์ผ๋ก ํ ๋นํ์ง ์์
let person2: string | null;
person2 = null;
person2 = "yurim";
2๏ธโฃ ๊ธฐ๋ณธํ์
: unknown
, any
, void
, never
, object
โ๏ธ ๐ฉunknown
unknown
์ด๋ค ํ์
์ธ์ง ์ ์ ์๋ค // ๐ฉ
let notSure: unknown = 0; // number๋ฅผ ํ ๋น ํ์์๋
notSure = "hi"; // string์ ํ ๋นํ ์ ์๋ค
notSure = true;
โ๏ธ ๐ฉany
any
์ด๋ค ๊ฒ์ด๋ ๋ค ๋ด์ ์ ์๋ค // ๐ฉ
let anything: any = 0; // number๋ฅผ ํ ๋น ํ์์๋
anything = "hi"; // string์ ํ ๋นํ ์ ์๋ค
anything = true;
โ๏ธ void
void
ํจ์์ ๋ฆฌํด์ด ์์ ๋์ ํ์
. ์๋ต๋ ๊ฐ๋ฅํ๋ค
function print(): void {
console.log("hello");
return;
}
let unusable: void = undefined; // ๐ฉ undefined ๋ฐ์ ํ ๋น์ด ์๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์์
โ๏ธ never
never
์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ์ดํ๋ฆฌ์ผ์ด์
์ด ์ฃฝ์ผ๋๊น ๋ฆฌํด๊ฐ์ด ์ ๋ ์๋ค. ๊ทธ๋ด ๋ never ํ์
์ ์ง์ .
never ํ์
์ ์ง์ ํ๋๋ฐ ๋ฆฌํด์ด ์๋ค๋ฉด ์๋ฌ ๋ฐ์.
// throwError ์ดํ๋ฆฌ์ผ์ด์
์์ ์์์น ๋ชปํ ์๋ฌ ๋ฐ์๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ฒ๋ฆฌํ๋ ํจ์
function throwError(message: string): never {
// message -> server (log)
throw new Error(message);
while (true) {}
}
let neverEnding: never; // ๐ฉ
// objet
let obj: object; // ๐ฉ
function acceptSomeObject(obj: object) {}
acceptSomeObject({ name: "ellie" });
acceptSomeObject({ animal: "dog" });
โ๏ธ object
object
: ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด ํ์
๊ณผ ๋์ผ.
๊ฐ์ฒด ์์ฑ์ ๋ํ ์ ๋ณด๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ์
์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ์์ฑ ์ ๋ณด๋ฅผ ํฌํจํด์ ํ์
์ ์ ์ํ๊ธฐ ์ํด์๋ ์ธํฐํ์ด์ค(interface)๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
interface Person {
name: string;
age?: number; // ๋ฌผ์ํ๊ฐ ๋ค์ด๊ฐ๋ค๋ ๊ฒ์, ์ค์ ์ ํด๋ ๋๊ณ ์ํด๋ ๋๋ ๊ฐ์ด๋ผ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
}
const person: Person = {
name: "april",
age: 20,
};
// interface ๋ฅผ extends ํด์ ์์๋ฐ๊ธฐ
interface Developer extends Person {
skills: string[];
}
const expert: Developer = {
name: "april",
skills: ["typescript", "react"],
};
const people: Person[] = [person, expert];