κ°μ²΄ 리ν°λ΄ νμ
νμ μ€ν¬λ¦½νΈμμλ κ°μ²΄μ ꡬ쑰λ₯Ό λͺ νν μ§μ ν μ μμΌλ©°, μ΄λ₯Ό κ°μ²΄ 리ν°λ΄ νμ μ΄λΌ νλ€. κ°μ²΄κ° κ°μ ΈμΌ ν μμ±κ³Ό κ·Έ νμ μ λͺ μν¨μΌλ‘μ¨ νμ μμ μ±μ ν보νλ€.
const user: { id: number; name: string } = {
id: 1,
name: "Alice",
};
νμ μ μ νμ μμ±(?)μ΄λ μ½κΈ° μ μ© μμ±(readonly)λ μ¬μ©ν μ μλ€.
const config: { readonly port: number; debug?: boolean } = {
port: 3000,
};
μ΄ λ°©μμ κ°λ¨ν κ°μ²΄ ꡬ쑰λ₯Ό μΌμμ μΌλ‘ μ μν λ μ μ©νλ©°, λ°λ³΅ μ¬μ©μ΄ νμν κ²½μ°μλ λ³λμ νμ λ³μΉμ΄λ μΈν°νμ΄μ€λ‘ λΆλ¦¬νλ κ²μ΄ μ’λ€.
μ λμΈ νμ
μ λμΈ νμ μ νλμ κ°μ΄ μ¬λ¬ νμ μ€ νλμΌ μ μμμ μλ―Ένλ€. | μ°μ°μλ₯Ό ν΅ν΄ μ μνλ©°, μλ‘ λ€λ₯Έ νμ κ° μ‘°κ±΄ λΆκΈ° μ²λ¦¬μ νμ©λλ€.
let status: "success" | "error" | "loading";
status = "success"; // OK
status = "failure"; // μ€λ₯
κΈ°λ³Έ νμ κ°μλ μ λμΈμ μ μ©ν μ μλ€.
let value: string | number;
value = "hello";
value = 42;
μ λμΈ νμ μ μ¬μ©ν κ²½μ°, ν΄λΉ κ°μ΄ μ΄λ€ νμ μΈμ§λ₯Ό νλ¨νμ¬ μμ νκ² λ€λ£¨κΈ° μν νμ κ°λκ° ν¨κ» μ¬μ©λλ€.
νμ λ³μΉ
νμ λ³μΉ(type alias)μ type ν€μλλ₯Ό μ¬μ©νμ¬ λ³΅μ‘ν νμ μ μ¬μ¬μ© κ°λ₯νλλ‘ μ΄λ¦μ λΆμ¬νλ κΈ°λ₯μ΄λ€. μ λμΈ νμ , κ°μ²΄ νμ , ν¨μ νμ λ± λ€μν νμ ννμ μ¬μ©ν μ μλ€.
type UserID = string | number;
let uid: UserID = "abc123";
κ°μ²΄ ꡬ쑰μλ νμ©ν μ μλ€.
type Product = {
id: number;
name: string;
price: number;
};
λ³μΉμ μΈν°νμ΄μ€μ μ μ¬ν μν μ νμ§λ§, μ λμΈ νμ μ΄λ ννκ³Ό κ°μ΄ λ νλμ νμ μ μμ μ ν©νλ€.
νμ κ°λ
νμ κ°λλ λ°νμ μμ μμ μ λμΈ νμ μ΄λ any νμ μ ꡬ체μ μΈ νμ μ μ’νκΈ° μν 쑰건문μ΄λ€. μΌλ°μ μΌλ‘ typeof, instanceof, μ¬μ©μ μ μ ν¨μ λ±μ΄ μ¬μ©λλ€.
function printId(id: string | number) {
if (typeof id === "string") {
console.log(id.toUpperCase());
} else {
console.log(id.toFixed(2));
}
}
μ¬μ©μ μ μ νμ κ°λλ₯Ό λ§λ€ μλ μλ€.
type Dog = { bark: () => void };
type Cat = { meow: () => void };
function isDog(animal: Dog | Cat): animal is Dog {
return (animal as Dog).bark !== undefined;
}
μ΄λ¬ν λ°©μμ μ λμΈ νμ μ²λ¦¬μ μμ μ±κ³Ό κ°λ μ±μ λμ΄λ λ° μ μ©νλ€.
λ°°μ΄κ³Ό νν
νμ μ€ν¬λ¦½νΈμμλ λ°°μ΄μ μμ νμ μ λͺ νν μ§μ ν μ μλ€. μΌλ° λ°°μ΄μ λ€μκ³Ό κ°μ΄ μ μΈνλ€.
let names: string[] = ["Alice", "Bob"];
let scores: Array<number> = [100, 95, 80];
νν(tuple)μ κ³ μ λ κΈΈμ΄μ κ° μΈλ±μ€μ λͺ νν νμ μ κ°μ§λ λ°°μ΄μ΄λ€. λ€μν λ°μ΄ν°λ₯Ό μμλλ‘ λ¬Άμ λ μ μ©νλ€.
let userInfo: [number, string, boolean] = [1, "Alice", true];
ννμ μΈλ±μ€ κΈ°λ° μ κ·Ό μ μλμΌλ‘ ν΄λΉ νμ μ΄ μΆλ‘ λλ―λ‘, λ°μ΄ν° ν¬λ§·μ΄ κ³ μ λ κ²½μ° μ¬μ©μ κΆμ₯νλ€.
ν΄λμ€μ κ°μ²΄ μμ±
νμ μ€ν¬λ¦½νΈμ ν΄λμ€λ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μν λ¬Έλ²μ μ§μνλ©°, μμ±μ(constructor)λ₯Ό ν΅ν΄ μ΄κΈ°νλ₯Ό μννλ€.
class User {
id: number;
name: string;
constructor(id: number, name: string) {
this.id = id;
this.name = name;
}
greet() {
return `Hello, ${this.name}`;
}
}
const user = new User(1, "Alice");
μμ±μλ₯Ό ν΅ν΄ μμ±μ μ΄κΈ°ννκ³ , λ©μλλ₯Ό ν΅ν΄ κ°μ²΄μ νμλ₯Ό μ μν μ μλ€.
μ κ·Ό μ§μ μ (public, private, protected)
νμ μ€ν¬λ¦½νΈλ ν΄λμ€ λ©€λ²μ μ κ·Ό μ μ΄μλ₯Ό μ 곡νλ€. publicμ μ΄λμλ μ κ·Ό κ°λ₯νκ³ , privateλ ν΄λμ€ λ΄λΆμμλ§ μ κ·Ό κ°λ₯νλ€. protectedλ ν΄λΉ ν΄λμ€μ μλΈ ν΄λμ€μμλ§ μ κ·Όν μ μλ€.
class Account {
public owner: string;
private balance: number;
constructor(owner: string, balance: number) {
this.owner = owner;
this.balance = balance;
}
public getBalance(): number {
return this.balance;
}
}
μ κ·Ό μ§μ μλ κ°μ²΄μ μΊ‘μνλ₯Ό ꡬννκ³ , μΈλΆλ‘λΆν°μ μλμΉ μμ μ κ·Όμ λ°©μ§νλ λ° μ μ©νλ€.
Getterμ Setter
νμ μ€ν¬λ¦½νΈλ getκ³Ό set ν€μλλ₯Ό ν΅ν΄ νλ‘νΌν° μ κ·Όμλ₯Ό μ μν μ μλ€. λ΄λΆ μμ±μ λν μ μ΄λ μ κ·Όμ μ 곡νλ©°, μμ±μ²λΌ νΈμΆν μ μλ€.
class Temperature {
private _celsius: number;
constructor(celsius: number) {
this._celsius = celsius;
}
get fahrenheit(): number {
return this._celsius * 1.8 + 32;
}
set fahrenheit(value: number) {
this._celsius = (value - 32) / 1.8;
}
}
const temp = new Temperature(0);
console.log(temp.fahrenheit); // 32
temp.fahrenheit = 50;
getter/setterλ μμ±μ μ ν¨μ± κ²μ¬, ν¬λ§· λ³ν, μΊ‘μνλ λ°μ΄ν° μ κ·Ό λ±μ ꡬνν λ μ μ©νλ€.
'ποΈνλ‘κ·Έλλ¨Έμ€ λ°λΈμ½μ€ > TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°λΈμ½μ€] React κΈ°μ΄ ν΅μ¬ μ 리(state, ꡬ쑰 λΆν΄ ν λΉ, μ»΄ν¬λνΈ λ°λ³΅) (1) | 2025.06.15 |
---|---|
[λ°λΈμ½μ€] Reactμ JSX, UI ν¨λ¬λ€μμ μ ν (1) | 2025.06.14 |
[λ°λΈμ½μ€] νμ μ€ν¬λ¦½νΈ κΈ°μ΄(νμ , μΈν°νμ΄μ€, μ΄κ±°ν) (1) | 2025.06.10 |
[λ°λΈμ½μ€] κ°μ²΄μ§ν₯ μΈμ΄ (3) | 2025.06.04 |
ν¬μΈν°μ κ°λ κ³Ό λ΄λΆ λμ (0) | 2025.06.03 |