Notice
Recent Posts
Recent Comments
Link
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
Tags
- μ΄μ€μ°κ²°λ¦¬μ€νΈ
- ML
- 2μ°¨μ‘°μ¬λ²
- μ΄μ€ν΄μ±
- λΆλ¦¬μ°μλ²
- vsCode
- bodyparser
- anaconda
- upheap
- κ°λ°©μ£Όμλ²
- μ νμ‘°μ¬λ²
- μ ννκ·
- μν₯μ ν
- κ²½μ¬νκ°λ²
- λ₯λ¬λ
- downheap
- MSE
- μ°κ²°λ¦¬μ€νΈ
- pytorch
- ν΄μν μ΄λΈ
- POST
- μκ³ λ¦¬μ¦
- νμ λ ¬
- Lossν¨μ
- μ½μ μ ν
- body-parser
- nodejs
- urlencoded
Archives
- Today
- Total
LittleDeveloper
νμ λ¨μΈμ μνν΄? - βasβ, μκ³ μ°μ! λ³Έλ¬Έ
π§νμ λ¨μΈμ μ λ±μ₯νλκ°?
- νμ μ€ν¬λ¦½νΈ μ»΄νμΌλ¬λ νμ νκΈ°, νμ μ’νκΈ°(type narrowing)μ νμ μΆλ‘ λ±μ κΈ°λ²μ μ΄μ©ν΄ κ°μ νμ μ νλ¨νλ€.
κ·Έλ¬λ μ»΄νμΌλ¬μ μ 보 λμ , νλ‘κ·Έλλ¨Έκ° μνλ νμ μ κ°μ ν λΉνκ³ μΆλ€λ©΄?
- μμ κ²½μ°λ₯Ό μν΄ λ±μ₯ν κ²μ΄ νμ λ¨μΈ(type assertion)μ΄λ€.
πνμ λ¨μΈ(Type Assertion)μ΄λ 무μμΈκ°?
- νμ λ¨μΈμ μλμ κ°μ ννλ‘ μ΄λ£¨μ΄μ§λ€.
value as Type
- μλμ μ½λλ‘ νμ λ¨μΈμ μμλ₯Ό νμΈν΄λ³΄μ.
interface Dog {
legs: 4;
bark(): void;
}
interface Insect {
legs: number;
creepy: boolean;
}
interface Fish {
swim(): void;
}
type Animal = Dog | Insect | Fish;
function doSomethingWithAnimal(animal: Animal) {
(animal as Fish).swim();
}
- DogλΌλ κ°μ²΄ νμ , InsectλΌλ κ°μ²΄ νμ , FishλΌλ κ°μ²΄ νμ μ΄ μλ€.
- λλ¬Όμ μ΄λ κ² 3κ°μ§ νμ μ΄ μλ€.
- doSomethingWithAnimal μ΄λΌλ ν¨μλ μ΄λ€ κΈ°λ₯μ νκ³ μλμ§ μ΄ν΄λ³΄λ©΄,
- μ΄ ν¨μμ 맀κ°λ³μμΈ animal κ°μ²΄λ₯Ό Fish νμ
μ΄λΌκ³ λ¨μΈνλ€.
- FishλΌκ³ λ¨μΈλ animal κ°μ²΄λ, swimμ΄λΌλ λ©μλλ₯Ό μ¬μ©ν μ μλ€. (FishμΈ κ²½μ°λ§ swimν μ μλ€κ³ κ°μ νλ λ§₯λ½μ.)
- μ΄ ν¨μμ 맀κ°λ³μμΈ animal κ°μ²΄λ₯Ό Fish νμ
μ΄λΌκ³ λ¨μΈνλ€.
μμλλ λ¬Έμ μλ μ΄λ€ κ²μ΄ μμκΉ?
- doSomethingWithAnimalμ΄λΌλ ν¨μμ Dog λλ Insect νμ μ λ£μ΄μ£Όλ©΄, κ°κ°μ νμ μΌλ‘ λ κ°μ²΄λ swimμ΄λΌλ κΈ°λ₯(λ©μλ)λ₯Ό μ¬μ©ν μ μμΌλ―λ‘, μ€λ₯κ° λ°μν κ²μ΄λ€.
βνμ λ¨μΈμ, νμ μλ¬κ° μ¬λΌμ§ λΏ λ°νμ μλ¬λ λ§μμ£Όμ§ μλλ€.
νμ λ¨μΈμ λν λ§μκ°μ§β¦
- κ°λ°μ: μ΄ κ°μ΄ μ΄λ€ νμ
μΈμ§λ λ΄κ° κ°μ₯ μ μμ! or λ΄κ° μ ν κ±°μΌ!
- μ΄λ¬ν μλλ₯Ό νμ μ λ¨μΈνλ©΄, νμ λ¨μΈμΌλ‘ μΈν μλ¬ μμ κ°λ°μμ μ± μμ΄ λλ€.
- νμ
μ μΈμμ μλͺ»λ νμ
μ κ°μ΄ ν λΉλλ©΄, νμ
μ²΄μ»€κ° μΉμ νκ² μ€λ₯λ₯Ό λ΄λΏλλ€.
- μ΄λ¬ν μΉμ ν¨μ 무μνκ³ νμ μ μ§μ νλ κ²μ, νμ μ³μ§ μμ λ°©μμΈκ°?
- ### μ§μν΄μΌ νλ€λ©΄, μ΄λ ν κ²½μ°κ° μμκΉ?
β νμ μ μΈμΌλ‘ μΆ©λΆν κ²½μ°, νμ λ¨μΈ νΌνκΈ°
- νμ μ μΈμ ν΅ν΄ νμ μ²΄μ»€κ° μ΄λ€ νμ μΈμ§ λͺ νν μΆλ‘ ν μ μλ€λ©΄, νμ λ¨μΈμ μ¬μ©ν μ΄μ κ° μλ€.
νμ μ μΈ μμ - νμ΄ν ν¨μμ νμ μ μΈ
- νμ΄ν ν¨μμ νμ μ μΈμ μΆλ‘ λ νμ μ΄ λͺ¨νΈν μ μλ€.
- μλ μ½λμμ Person interfaceλ₯Ό μ¬μ©νκ³ μΆλ€κ³ ν΄λ³΄μ.
interface Person { name: string };
const people = ['alice', 'bob', 'jan'].map(name => ({name});
// Person[]μ μνμ§λ§ κ²°κ³Όλ { name: string; } []...
- κ·Έλ λ€λ©΄ μ΄λ€ μμΌλ‘ μ½λλ₯Ό μ§μΌ ν κΉ?
- νμ λ¨μΈμΌλ‘ ν΄κ²°νλ€λ©΄?
interface Person { name: string }; const people = ['alice', 'bob', 'jan'].map( name => ({name} as Person) ); // Type is Person[]
- λ¨, μμ κ°μ λ¨μΈλ¬Έ λ°©μμ λ°νμ μμμ μ€λ₯κ° λ°μν μ μλ€.
- κ·Έλ¬λ―λ‘ λ¨μΈλ¬Έμ μ°μ§ μκ³ , μλμ κ°μ΄ νμ΄ν ν¨μ λ΄μμ νμ κ³Ό ν¨κ» λ³μλ₯Ό μ§κ΄μ μΌλ‘ μ μΈν΄λ³΄μ!
const people = ['alice', 'bob', 'jan'].map(name => {
const person: Person = {name};
return person
}); // νμ
μ Person[]
- λλ λ³μ λμ ν¨μμ λ°ν νμ μ μ μΈν μ μλ€!
const people: Person[] = ['alice', 'bob', 'jan'].map(name => {
(name): Person => ({name})
});
- λ°λΌμ νμ λ¨μΈμ΄ κΌ νμν κ²½μ°κ° μλλΌλ©΄, μμ μ± μ²΄ν¬κ° λλ νμ μ μΈμ μ¬μ©νλ κ²μ΄ λ°λμ§νλ€.
β¨νμ λ¨μΈμ μΈμ νμνκ°?
β νμ μ 보λ₯Ό κ°λ°μκ° λ μ μλ κ²½μ°
- DOM Element
- DOM Elementλ νμ μ€ν¬λ¦½λ³΄λ€ μ°λ¦¬κ° λ μ μλ μ 보μ΄λ€.
- νμ μ€ν¬λ¦½νΈλ DOMμ μ κ·Όν μ μκΈ° λλ¬Έμ, νμ λ¨μΈμ μ°λ κ²μ΄ νλΉνλ€.
- μλμ κ°μ΄ λ²νΌ κ°μ²΄μ μ κ·Όν λ, μ΄ λ²νΌμ as HTMLButtonElement λΌκ³ λ¨μΈν΄μ£Όλ κ²μ΄ μ’λ€.
document.querySelector('#myButton').addEventListener('click', e => {
e.currentTarget // Type is EventTarget
const button = e.currentTarget as HTMLButtonElement;
button // Type is HTMLButtonElement
});
- λλ ! λ₯Ό μ΄μ©ν΄ nullμ΄ μλμ λ¨μΈν΄μ€ μλ μλ€.
const elNull = document.getElementById('foo'); // Type is HTMLElement | null
const el = document.getElementById('foo')!; // Type is HTMLElement