μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- μλ¬
- type
- PROJECT
- JavaScript
- rn
- μλ°μ€ν¬λ¦½νΈ
- react
- NEXT
- λΆνΈμΊ ν
- Redux
- λ΄μΌλ°°μ
- ν¨μ
- wil
- νμ
- κ°λ°μ
- Firebase
- μ¨λΌμΈ
- μ½λ©
- νλ‘ νΈμλ
- API
- trainning
- 리μ‘νΈ
- νλ‘μ νΈ
- K-Digital
- νμ€
- λ³μ
- λ΄μΌλ°°μμΊ ν
- native
- μκ³ λ¦¬μ¦
- JS
- Today
- Total
Frontend κ°λ°μ - hyo.loui
νμ μ€ν¬λ¦½νΈ - interface (μΈν°νμ΄μ€) λ³Έλ¬Έ
π―λͺ©μ :
TS Interface (μΈν°νμ΄μ€), μ 리 λ° λ³΅μ΅
1. μΈν°νμ΄μ€λ?
μμ μ€λͺ ν νμ μΌλΌμ΄μ΄μ κ°μ΄ κ°μ²΄μ ννλ‘ κ΅¬μ±λλ€
νμ§λ§, λμ μ°¨μ΄μ μ΄ μ‘΄μ¬νκ³ μΈν°νμ΄μ€λ νμ 체ν¬λ₯Ό μν΄
λ³μ, ν¨μ, ν΄λμ€ λ± μ’λ λ€μν κ³³μ μ¬μ©ν μ μλ€.
// interface
// κΈ°λ³Έ μμ±
interface Person {
name: string;
age: number;
}
const person_1: Person = {
name: "tmdgy",
age: 14,
};
// Error: interfaceμμ ν λΉνμ§ μμ λ€λ₯Έ νμ
μ μ¬μ©μ μλ¬λ°μ
// const person2:Person = {
// name: 12,
// age: 'one'
// }
2. type vs interface
λμ μ°¨μ΄μ μ μμ보μ
- νμ₯ λ°©λ²
// interface νμ₯ λ°©λ² = extends
interface PeopleInterface {
name: string
age: number
}
interface StudentInterface extends PeopleInterface {
school: string
}
// type νμ₯ λ°©λ²: newType = prevType & addType
type PeopleType = {
name: string
age: number
}
type StudentType = PeopleType & {
school: string
}
- μ μΈμ νμ₯
interface teset {
title: string;
}
interface teset {
ts: number;
}
// κ°μ interface λͺ
μΌλ‘ tesetλ₯Ό λ€μ λ§λ λ€λ©΄, μλμΌλ‘ νμ₯μ΄ λλ€.
const text: teset = {
title: "header",
ts: 12,
};
console.log("ππ text", text); // ππ text { title: 'header', ts: 12 }
- type μ λΆκ°λ₯ νλ€
- computed valueμ μ¬μ©: typeμ κ°λ₯ , interfaceλ λΆκ°λ₯ (μλ΅)
3. 'κΈ°λ³Έ μμ±'κ³Ό 'μ ν μμ±'
κΈ°λ³Έ μμ±μ ν λΉνλ κ°μ κ·Έλλ‘ λ£μ΄μ€μΌ νμ§λ§
μ νμ μΌλ‘ 'Optional chaining' μ ν΅ν΄
κ°μ μ νμ μΌλ‘ ν λΉν μ μλ€.
μ¦, λ£μ΄λ λκ³ μλ£μ΄λ λλ κ°μ λ§λ€μ΄ μ€ μ μλ€.
// κΈ°λ³Έ μμ±
interface Person {
name: string;
age: number;
}
const person_1: Person = {
name: "seung hyo",
age: 14,
};
// μ ν μμ±
interface Person2 {
name: string;
age?: number; // optional chaining
}
const person_2: Person2 = {
name: "seung hyo",
// ageκ° μμ΄λ λκ³ , μμ΄λ λ¨
};
μλ¬ μμ΄ μ μ μλνλ€!
4. Read Only (μ½κΈ° μ μ©)
readonlyλ₯Ό μμ±νλ©΄
μ½κΈ° μ μ©μΌλ‘ μ§μ ν΄, μμ μ΄ λΆκ°λ₯νλ€
// Read Only
interface Person3 {
readonly name: string;
age?: number;
}
const person_3: Person3 = { name: "js" };
// person_3.name = "her"; // μ½κΈ° μ μ© μμ±μΌλ‘ Error
// RaedOnlyArray
let readOnlyArr: ReadonlyArray<number> = [1, 2, 3];
// readOnlyArr.push(4); // Error
// readOnlyArr[0] = 2; // Error
console.log("ππ readOnlyArray", readOnlyArr[0]); //ππ readOnlyArray 1
5. INDEX νμ
μΆκ° μμ±λλ κ°μ²΄μ μμ±μ νμ μ μ§μ ν΄ μ€ μ μλ€.
// INDEX νμ
interface Person4 {
readonly name: string;
[key: string]: string | number; // INDEX type
}
const person_4: Person4 = { name: "js", age: 14, birthday: "λΉλ°" };
console.log("ππ person_4", person_4); //ππ person_4 { name: 'js', age: 14, birthday: 'λΉλ°' }
6. ν¨μ(funciton) νμ
ν¨μμ νλΌλ―Έν°, returnμ νμ μ μ§μ ν΄ μ€ μ μλ€.
// ν¨μ νμ
// interface
interface Person5 {
(name: string, age: number): string;
}
// type
type Print = (name: string, age: number) => string;
const getName: Person5 = (name, age) => {
return `name: ${name}, age: ${age}`;
};
const get1 = getName("seung hyo", 12);
console.log("ππ get1", get1); // ππ get1 name: seung hyo, age: 12
μ΅μ’ μ 리
- νμ μ λΉν΄, μΈν°νμ΄μ€μ νμ©λ²μκ° λμΌλ©° μ€μ μ¬μ© λΉλκ° λ λ§λ€
- μ±λ₯μ μν΄μλ interfaceκ° μ’μΌλ, νλ‘μ νΈ μ λ°μ λ Όμκ° νμν΄ λ³΄μΈλ€(type & interface)
- TSμ interfaceμμλ μ΅μ λ 체μ΄λμ΄ κ°λ₯ν΄, λ£μ΄λ λκ³ μλ£μ΄λ λλ κ°μ λ§λ€μ΄ μ€ μ μλ€
- readonlyλ₯Ό μμ±νλ©΄ μ½κΈ° μ μ©μΌλ‘ μμ μ΄ λΆκ°λ₯ν νμ μ λ§λ€μ΄ μ€λ€.
- indexνμ μ νμ©ν΄ μΆκ°λ‘ μμ±λλ κ°μ²΄ μμ±μ νμ μ μ§μ ν΄ μ€ μ μλ€.
- ν¨μ νμ μΌλ‘, νλΌλ―Έν°μ 리ν΄μ νμ λ μ§μ ν΄ μ€ μ μλ€.
'Typescript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νμ μ€ν¬λ¦½νΈ - Generic (μ λ€λ¦) (0) | 2023.01.19 |
---|---|
νμ μ€ν¬λ¦½νΈ - interface extension(μΈν°νμ΄μ€ νμ₯) (0) | 2023.01.19 |
νμ μ€ν¬λ¦½νΈ - Type Alias (νμ λ³μΉ) (0) | 2023.01.18 |
νμ μ€ν¬λ¦½νΈ - Union (μ λμ¨) νμ (0) | 2023.01.17 |
νμ μ€ν¬λ¦½νΈ - Enum (μ΄λ) (0) | 2023.01.17 |