😎
Onemorebottlee's TIL
  • πŸ€“Introduce
  • πŸ“–DevLog
    • πŸ’£Error
      • npm ERR! Cannot read properties of null (reading 'edgesOut')
      • git
        • src refspec main does not match any
      • NextJS
        • No img element
        • ReferenceError : document is not defined
        • `next/image` Un-configured Host
  • πŸ“ΊLecture
    • Nomad Coders
      • 초보자λ₯Ό μœ„ν•œ λ¦¬λ•μŠ€ 101
        • #0 Introduction
        • #1 PURE REDUX: COUNTER
        • #2 PURE REDUX: TO DO LIST
        • #3 REACT REDUX
        • #4 Redux Toolkit
      • 바닐라 JS둜 κ·Έλ¦Ό μ•± λ§Œλ“€κΈ°
      • React JS λ§ˆμŠ€ν„° 클래슀
        • #2 Styled Componnents
        • #3 TypeScript
        • #4 Crypto Tracker
        • #5 State Management
        • #6 Trello
        • #7 ANIMATIONS
      • Next.js μ‹œμž‘ν•˜κΈ°
        • #0 INTRODUCTION
        • #1 FRAMEWORK OVERVIEW
        • #2 PRACTICE PROJECT
      • Typescript둜 블둝체인 λ§Œλ“€κΈ°
        • #1 Introduction
        • #2 Overview of TypeScript
        • #3 Functions
        • #4 Classes and Interfaces
        • #5 TypeScript Blockchain
      • SQL Master Class
        • #1 Introduction
        • #2 SQLite
        • #3 Data Definition Language
        • #4 Data Manipulation Language
        • #5 Subqueries and CTEs
        • #6 Indexes
        • #7 MySQL
        • #8 Foreign Keys
        • #9 JOINS
        • #10 Nomalization
        • #11 Events & Triggers
        • #12 Full-Text Indexes
        • #13 PostgreSQL
        • #14 Functions And Procedures
        • #15 Transactions
        • #16 Data Control Language
        • #17 PostgreSQL JSON Columns
        • #18 PostgreSQL Extensions
        • #19 MongoDB
        • #20 REDIS
        • #21 Javascript and Python Drivers
    • Udemy
      • TypeScript λ§ˆμŠ€ν„° with Webpack & React
        • [S1] μ†Œκ°œ
        • [S2] μ„€μΉ˜ 및 μ„€μ •
        • [S3] νƒ€μž… μ• λ„ˆν…Œμ΄μ…˜ 기초
        • [S4] ν•¨μˆ˜
        • [S5] 객체 νƒ€μž…
        • [S6] λ°°μ—΄ νƒ€μž…
        • [S7] μœ λ‹ˆμ˜¨νƒ€μž…
        • [S8] Tuple & Enum
        • [S9] μΈν„°νŽ˜μ΄μŠ€
        • [S10] TypeScript 컴파일러
        • [S11] λ―Έλ‹ˆ ν”„λ‘œμ νŠΈ DOM, νƒ€μž… 단언, 그리고 더 λ§Žμ€ λ‚΄μš©
        • [S12] Class
        • [S13] TS Class
        • [S14] Generics ⭐⭐⭐⭐⭐
        • [S15] Narrowing
        • [S16] Type Declarations
        • [S17] Module
        • [S18] Webpack κ³Ό TypeScript
        • [S19] React
    • λͺ¨λ‘λ₯Ό μœ„ν•œ 컴퓨터 κ³Όν•™ CS50
      • 1. μ»΄ν“¨νŒ… 사고
      • 2. Cμ–Έμ–΄
      • 3. λ°°μ—΄
      • 4. μ•Œκ³ λ¦¬μ¦˜
      • 5. λ©”λͺ¨λ¦¬
      • 6. 자료ꡬ쑰
    • μƒν™œμ½”λ”©
      • DATABASE
        • DATABASE1
  • πŸ“šBook
    • λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive
      • 1μž₯ ν”„λ‘œκ·Έλž˜λ°
      • 2μž₯ μžλ°”μŠ€ν¬λ¦½νŠΈλž€?
      • 3μž₯ μžλ°”μŠ€ν¬λ¦½νŠΈ 개발 ν™˜κ²½κ³Ό μ‹€ν–‰ 방법
      • 4μž₯ λ³€μˆ˜
      • 5μž₯ ν‘œν˜„μ‹κ³Ό λ¬Έ
      • 6μž₯ 데이터 νƒ€μž…
      • 7μž₯ μ—°μ‚°μž
      • 8μž₯ μ œμ–΄λ¬Έ
      • 9μž₯ νƒ€μž… λ³€ν™˜κ³Ό 단좕 평가 ⭐⭐⭐
      • 10μž₯ 객체 λ¦¬ν„°λŸ΄
      • 11μž₯ μ›μ‹œ κ°’κ³Ό 객체의 비ꡐ
      • 12μž₯ ν•¨μˆ˜ ⭐⭐⭐⭐
      • 13μž₯ μŠ€μ½”ν”„
      • 14μž₯ μ „μ—­ λ³€μˆ˜μ˜ 문제점
      • 15μž₯ let, const ν‚€μ›Œλ“œμ™€ 블둝 레벨 μŠ€μ½”ν”„ ⭐⭐⭐
      • 16μž₯ ν”„λ‘œνΌν‹° μ–΄νŠΈλ¦¬λ·°νŠΈ
      • 17μž₯ μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•œ 객체 생성
      • 18μž₯ ν•¨μˆ˜μ™€ 일급 객체 ⭐⭐
      • 19μž₯ ν”„λ‘œν† νƒ€μž… ⭐⭐⭐⭐⭐
      • 20μž₯ strict mode
      • 21μž₯ 빌트인 객체 ⭐
      • 22μž₯ this ⭐⭐⭐
      • 23μž₯ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
      • 24μž₯ ν΄λ‘œμ € ⭐⭐⭐⭐⭐⭐⭐
      • 25μž₯ 클래슀
      • 26μž₯ ES6 ν•¨μˆ˜μ˜ μΆ”κ°€ κΈ°λŠ₯
      • 27μž₯ λ°°μ—΄ ⭐⭐⭐
      • 28μž₯ Number
      • 29μž₯ Math
      • 30μž₯ Date
      • 31μž₯ RegExp
      • 32μž₯ String
      • 33μž₯ 7번째 데이터 νƒ€μž… Symbol
      • 34μž₯ μ΄ν„°λŸ¬λΈ”
      • 35μž₯ μŠ€ν”„λ ˆλ“œ 문법
      • 36μž₯ λ””μŠ€νŠΈλŸ­μ²˜λ§ ν• λ‹Ή
      • 37μž₯ Setκ³Ό Map
      • 38μž₯ λΈŒλΌμš°μ €μ˜ λ Œλ”λ§ 과정⭐⭐⭐⭐⭐⭐⭐⭐
      • 39μž₯ DOM ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
      • 40μž₯ 이벀트⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
      • 41μž₯ 타이머
      • 42μž₯ 비동기 ν”„λ‘œκ·Έλž˜λ° ⭐⭐⭐⭐⭐⭐⭐⭐
      • 43μž₯ Ajax
      • 44μž₯ REST API
      • 45μž₯ ν”„λ‘œλ―ΈμŠ€
      • 46μž₯ μ œλ„ˆλ ˆμ΄ν„°μ™€ async/await
      • 47μž₯ μ—λŸ¬ 처리
      • 48μž₯ λͺ¨λ“ˆ
      • 49μž₯ Babelκ³Ό Webpack을 μ΄μš©ν•œ ES6+/ES.NEXT 개발 ν™˜κ²½ ꡬ좕
    • λŸ¬λ‹ νƒ€μž…μŠ€ν¬λ¦½νŠΈ
      • Ch.1 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ
      • Ch.2 νƒ€μž… μ‹œμŠ€ν…œ
      • Ch.3 μœ λ‹ˆμ–Έκ³Ό λ¦¬ν„°λŸ΄
      • Ch.4 객체
      • Ch.5 ν•¨μˆ˜
      • Ch.6 λ°°μ—΄
      • Ch.7 μΈν„°νŽ˜μ΄μŠ€
      • Ch.8 클래슀
      • Ch.9 νƒ€μž… μ œν•œμž
      • Ch.10 μ œλ„€λ¦­
      • Ch.11 μ„ μ–Έ 파일
      • Ch.12 IDE κΈ°λŠ₯ μ‚¬μš©
      • Ch.13 ꡬ성 μ˜΅μ…˜
      • Ch.14 ꡬ문 ν™•μž₯
      • Ch.15 νƒ€μž… 운영
      • μš©μ–΄ 사전
    • μžλ°”μŠ€ν¬λ¦½νŠΈ μ™„λ²½ κ°€μ΄λ“œ
    • SQL in 10 Minutes
      • 1μž₯ SQL μ΄ν•΄ν•˜κΈ°
      • 2μž₯ 데이터 κ°€μ Έμ˜€κΈ°
      • 3μž₯ κ°€μ Έμ˜¨ 데이터 μ •λ ¬ν•˜κΈ°
      • 4μž₯ 데이터 필터링
      • 5μž₯ κ³ κΈ‰ 데이터 필터링
      • 6μž₯ μ™€μΌλ“œμΉ΄λ“œ 문자λ₯Ό μ΄μš©ν•œ 필터링
      • 7μž₯ 계산 ν•„λ“œ μƒμ„±ν•˜κΈ°
      • 8μž₯ 데이터 μ‘°μž‘ ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
      • 9μž₯ 데이터 μš”μ•½
      • 10μž₯ 데이터 κ·Έλ£Ήν•‘
      • 11μž₯ μ„œλΈŒμΏΌλ¦¬ μ‚¬μš©ν•˜κΈ°
      • 12μž₯ ν…Œμ΄λΈ” 쑰인
      • 13μž₯ κ³ κΈ‰ ν…Œμ΄λΈ” 쑰인 μƒμ„±ν•˜κΈ°
      • 14μž₯ 쿼리 κ²°ν•©ν•˜κΈ°
      • 15μž₯ 데이터 μ‚½μž…ν•˜κΈ°
      • 16μž₯ 데이터 μ—…λ°μ΄νŠΈμ™€ μ‚­μ œ
      • 17μž₯ ν…Œμ΄λΈ” 생성과 μ‘°μž‘
      • 18μž₯ λ·° μ‚¬μš©ν•˜κΈ°
      • 19μž₯ μ €μž₯ ν”„λ‘œμ‹œμ € μ‚¬μš©ν•˜κΈ°
      • 20μž₯ νŠΈλžœμž­μ…˜ 처리 κ΄€λ¦¬ν•˜κΈ°
      • 21μž₯ μ»€μ„œ μ‚¬μš©ν•˜κΈ°
      • 22μž₯ κ³ κΈ‰ 데이터 μ‘°μž‘ μ˜΅μ…˜
    • 면접을 μœ„ν•œ CS 전곡지식 λ…ΈνŠΈ
      • 4 λ°μ΄ν„°λ² μ΄μŠ€
        • 4.1 λ°μ΄ν„°λ² μ΄μŠ€μ˜ κΈ°λ³Έ
    • 2023 이기적 SQL 개발자 μ΄λ‘ μ„œ + 기좜문제
      • 데이터 λͺ¨λΈλ§ 이해
        • S1. 데이터 λͺ¨λΈλ§
  • πŸ’»Study
    • CS 지식 λ°œν‘œ
      • 1회차
      • 2회차
      • 3회차
      • 4회차
      • 5회차
      • 6회차
      • 7회차
      • 8회차
      • 9회차
    • TypeScript Exercises
      • Ex 1
      • Ex 2
      • Ex 3
      • Ex 4
      • Ex 5
      • Ex 6
      • Ex 7
      • Ex 8
      • Ex 9
      • Ex 10
  • πŸ”„ETC
    • Article
      • Atomic Design Pattern
      • ν”„λ‘ νŠΈμ—”λ“œ 개발자
    • DATABASE
      • Oracle
        • CEIL() & FLOOR() - μ†Œμˆ˜μ  올림 & λ‚΄λ¦Ό
        • DUAL ν…Œμ΄λΈ” - μž„μ‹œ ν…Œμ΄λΈ”λ‘œ κ²°κ³Ό ν™•μΈν•˜κΈ°
    • Ubuntu
      • μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ—…λ°μ΄νŠΈ
Powered by GitBook
On this page
  • #3.0 Call Signatures
  • #3.1 Overloading
  • #3.2 Polymorphism
  • #3.3 Generics Recap
  • #3.4 Conclusions

Was this helpful?

  1. Lecture
  2. Nomad Coders
  3. Typescript둜 블둝체인 λ§Œλ“€κΈ°

#3 Functions

#3.0 Call Signatures

ν•¨μˆ˜ μœ„μ— 마우슀λ₯Ό μ˜¬λ Έμ„ λ•Œ λœ¨λŠ” ν•¨μˆ˜λ₯Ό μ–΄λ–»κ²Œ ν˜ΈμΆœν•΄μ•Ό ν•˜λŠ”μ§€, μ–΄λ–»κ²Œ λ°˜ν™˜λ˜λŠ”μ§€ μ•Œλ €μ£ΌλŠ” 정보λ₯Ό μ˜λ―Έν•œλ‹€. κ°œλ°œμžκ°€ νƒ€μž…μ„ μƒκ°ν•˜κ³  μž‘μ„±ν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ μ»΄νŒŒμΌλ˜μ§€ μ•Šκ³  νƒ€μž…μŠ€ν¬λ¦½νŠΈ ν™˜κ²½μ—μ„œλ§Œ μ‚¬μš©λ˜λŠ” μ½”λ“œμ΄λ‹€.

type Add = (a:number, b:number) => number

const add: Add = (a, b) => a + b

#3.1 Overloading

Function Overloading 은 μ™ΈλΆ€ λΌμ΄λΈŒλŸ¬λ¦¬μ— 자주 λ³΄μ΄λŠ” ν˜•νƒœλ‘œ, ν•˜λ‚˜μ˜ ν•¨μˆ˜κ°€ μ—¬λŸ¬ 개의 Call Signatureλ₯Ό κ°€μ§ˆ λ•Œ λ°œμƒν•œλ‹€.

type Add = {
    (a: number, b: number) : number,
    (a: number, b: string) : number
}

const add : Add = (a, b) => a + b // err => bκ°€ string일 경우 + κ°€ μ•ˆλ¨

const add : Add = (a, b) => {
    if(typeof a === "string") return a
    return a + b
}

μ—¬λŸ¬ 개의 argument 인 경우, λͺ¨λ“  λ³€μˆ˜λ₯Ό μ•ˆμ“Έ 수 도 μžˆλ‹€.

type Add = {
    (a: number, b: number) : number,
    (a: number, b: number, c: number) : number
}

const add : Add = (a, b, c) => { // err => c
    return a + b
}

const add : Add = (a, b, c?: number) => { // c => optional
    if(c) return a + b + c
    return a + b
}

#3.2 Polymorphism

λ‹€ν˜•μ„± - μ—¬λŸ¬ νƒ€μž…μ„ λ°›μ•„λ“€μž„μœΌλ‘œμ¨ μ—¬λŸ¬ ν˜•νƒœλ₯Ό κ°€μ§€λŠ” 것

type SuperPrint = {
    <T>(arr: T[]) => T // <---> : Generic
}

const superPrint: SuperPrint = (arr) => arr[0]

superPrint([1,2,3,4])
superPrint([true, false, true])
superPrint([1, 2, false, true, "hello"])
// μ—¬λŸ¬ νƒ€μž…μ΄ ν¬ν•¨λ˜μ–΄λ„ TSκ°€ 각 νƒ€μž…μ„ μΆ”λ‘ 

Concrete Type - number, string, void ...

#3.3 Generics Recap

=> Generic ... any와 λΉ„μŠ·ν•œλ°?!

=> no ! any μ‚¬μš©μ€ νƒ€μž… μ•ˆμ •μ„±μ„ 포기할 뿐 μ•„λ‹ˆλΌ 좜λ ₯κ°’μ˜ νƒ€μž…μ„ λ³΄ν˜Έν•  수 μ—†μŒ

μš”μ²­ν•œ μ œλ„€λ¦­ μˆœμ„œμ— 따라 λ§€κ°œλ³€μˆ˜μ— μ•Œμ•„μ„œ μ μš©ν•¨

type SuperPrint = <T, M>(a: T[], b: M) => T

const superPrint: SuperPrint = (arr) => arr[0]

superPrint([1,2,3,4], "x")
superPrint([true, false, true], 1)
superPrint([1, 2, false, true, "hello"], false)

#3.4 Conclusions

// μœ„μ™€ κ°™μŒ
function superPrint <T> (a: T[]) {
    return a[0]
}

μ œλ„ˆλ¦­μ€ μ»€μŠ€ν…€ 및 μž¬μ‚¬μš©μ΄ κ°€λŠ₯함

type Player<E> = {
    name: string
    extraInfo: E
}

type NicExtra = {
    favFood: string
}

type NicPlayer = Player<NicExtra>

const nic : NicPlayer = {
    name: "nico",
    extraInfo: {
        favFood: "Kimchi"
    }
}

const kim: Player<null> = {
    name: "Kim",
    extraInfo: null
}

μ œλ„ˆλ¦­μ€ λ‹€μ–‘ν•œ κ³³μ—μ„œ μ‚¬μš© κ°€λŠ₯함

useState<number>()

μ œλ„ˆλ¦­μ€ μ„ μ–Έ μ‹œμ μ΄ μ•„λ‹Œ, 생성 μ‹œμ μ— νƒ€μž…μ„ λͺ…μ‹œν•˜μ—¬ ν•˜λ‚˜μ˜ νƒ€μž…μ΄ μ•„λ‹Œ λ‹€μ–‘ν•œ νƒ€μž…μ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” 기법이닀.

Previous#2 Overview of TypeScriptNext#4 Classes and Interfaces

Last updated 1 year ago

Was this helpful?

- νƒ€μž…μ˜ placeholder

πŸ“Ί
Generic