TS: ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ±Œλ¦°μ§€_day8

2024. 8. 9. 00:58Β·lecture recap

 πŸΆ 진도

 

4. ν•¨μˆ˜μ™€ νƒ€μž… (5/5)

  • ν•¨μˆ˜ μ˜€λ²„λ‘œλ”©
  • μ‚¬μš©μž μ •μ˜ νƒ€μž… κ°€λ“œ

5. μΈν„°νŽ˜μ΄μŠ€ (3/3)

  • μΈν„°νŽ˜μ΄μŠ€
  • μΈν„°νŽ˜μ΄μŠ€ ν™•μž₯ν•˜κΈ°
  • μΈν„°νŽ˜μ΄μŠ€ μ„ μ–Έ ν•©μΉ˜κΈ°


🫘 μš”μ•½

 

ν•¨μˆ˜ μ˜€λ²„λ‘œλ”©

/**
 * ν•¨μˆ˜ μ˜€λ²„λ‘œλ”©
 * ν•˜λ‚˜μ˜ ν•¨μˆ˜λ₯Ό λ§€κ°œλ³€μˆ˜μ˜ κ°―μˆ˜λ‚˜ νƒ€μž…μ— 따라
 * μ—¬λŸ¬κ°€μ§€ λ²„μ „μœΌλ‘œ λ§Œλ“œλŠ” 문법
 * -> ν•˜λ‚˜μ˜ ν•¨μˆ˜ func
 * -> λͺ¨λ“  λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ€ number
 * -> ver1. λ§€κ°œλ³€μˆ˜κ°€ 1개 -> 이 λ§€κ°œλ³€μˆ˜μ— 20을 κ³±ν•œ κ°’ 좜λ ₯
 * -> ver2. λ§€κ°œλ³€μˆ˜κ°€ 3개 -> 이 λ§€κ°œλ³€μˆ˜λ“€μ„ λ‹€ λ”ν•œ 값을 좜λ ₯
 */

// 버전듀 -> μ˜€λ²„λ‘œλ“œ μ‹œκ·Έλ‹ˆμ²˜
function func(a: number): void; // 1번
function func(a: number, b: number, c: number): void; // 2번
// μ‹€μ œ κ΅¬ν˜„λΆ€ -> κ΅¬ν˜„ μ‹œκ·Έλ‹ˆμ²˜
// function func(a: number);
// function func(a: number, b: number, c: number) λŠ” 1번 μ˜€λ²„λ‘œλ“œ μ‹œκ·Έλ‹ˆμ²˜λ₯Ό λ§Œλ“  μ˜λ―Έκ°€ μ—†μ–΄μ§€κΈ° λ•Œλ¬Έμ— ?둜 μžˆμ„μˆ˜λ„ μ—†μ„μˆ˜λ„ μžˆλŠ” λ§€κ°œλ³€μˆ˜μ˜ 값을 ν‘œν˜„ν•΄μ€˜μ•Όν•œλ‹€
function func(a: number, b?: number, c?: number) {
    if (typeof b === "number" && typeof c === "number") {
        console.log(a + b + c);
    } else {
        console.log(a * 20);
    }
}
// func();
func(1);
// func(1,2);
func(1, 2, 3);

 

μ‚¬μš©μž μ •μ˜ νƒ€μž… κ°€λ“œ

/**
 * μ‚¬μš©μž μ •μ˜ νƒ€μž…κ°€λ“œ
 */

type Dog = {
    name: string;
    isBark: boolean;
}
type Cat = {
    name: string;
    isScratch: boolean;
};

type Animal = Dog | Cat;
// μ„œλ‘œμ†Œ μœ λ‹ˆμ˜¨ νƒ€μž…μœΌλ‘œ type을 μˆ˜μ •ν•˜μ§€ λͺ»ν•˜λŠ” 경우라고 치고 ν•¨μˆ˜ μ „κ°œ

function isDog(animal:Animal): animal is Dog{
return (animal as Dog).isBark !== undefined;
}
function isCat(animal: Animal): animal is Cat {
    return (animal as Cat).isScratch !== undefined;
}

function warning(animal:Animal)  {
    if(isDog(animal)){
        // animal에 μ»€μ„œ λŒ€λ³΄λ©΄ animal: Dog
        animal;
    }else if("isScratch" in animal){
        // animal에 μ»€μ„œ λŒ€λ³΄λ©΄ animal: Cat
        animal;
    }
}

 

μΈν„°νŽ˜μ΄μŠ€

/**
 * μΈν„°νŽ˜μ΄μŠ€ interface
 */

interface Person {
    readonly name: string;
    age?: number;
    // sayHi: () => void;  // ν•¨μˆ˜ νƒ€μž… ν‘œν˜„μ‹
    sayHi(): void; // 호좜 μ‹œκ·Έλ‹ˆμ²˜
    sayHi(a: number, b: number): void; // 호좜 μ‹œκ·Έλ‹ˆμ²˜
}

const person: Person = {
    name: "Natty",
    sayHi: function () {
        console.log("hi");
    },
};

person.sayHi();
person.sayHi(1,2);

 

μΈν„°νŽ˜μ΄μŠ€ ν™•μž₯

/**
 * μΈν„°νŽ˜μ΄μŠ€μ˜ ν™•μž₯
 */

type Animal = {
    name: string;
    color: string;
};

interface Dog extends Animal {
    isBark: boolean;
}
const dog: Dog = {
    name: "",
    color: "",
    isBark: true,
};

interface Cat extends Animal {
    isScratch: boolean;
}

interface Chicken extends Animal {
    isFly: boolean;
}

interface DogCat extends Dog, Cat {}
const dogCat: DogCat = {
    name: "",
    color: "",
    isBark: false,
    isScratch: true,
};

μΈν„°νŽ˜μ΄μŠ€ μ„ μ–Έ ν•©μΉ˜κΈ°

/**
 * μ„ μ–Έ ν•©μΉ¨
 */

interface Person {
    name: string;
}

interface Person {
    // name: number; 
    // 후속 속성 μ„ μ–Έ μ‹œμ—λŠ” 같은 ν˜•μ‹μ΄ μžˆμ–΄μ•Όν•¨. μ„œλΈŒνƒ€μž…λ„ μ•ˆλœλ‹€
    name: string;
    age: number;
}
// ν™•μž₯μ‹œμ—λŠ” μ„œλΈŒνƒ€μž…μΈ string literal type이어도 okμ˜€μ§€λ§Œ μ„ μ–Έ ν•©μΉ¨μ˜ κ²½μš°μ—λŠ” μ„œλΈŒνƒ€μž…λ„ μ•ˆλœλ‹€
interface Developer extends Person {
    name: "hello";
}

const person: Person = {
    name: "",
    age: 25,
};


/**
 * λͺ¨λ“ˆ 보강
 */

interface Lib {
    a: number;
    b: number;
}
interface Lib {
    c: string;
}
const lib: Lib = {
    a: 1,
    b: 2,
    c: "xoxo",
// c λ₯Ό μΆ”κ°€ν•˜κ³  싢을 λ•Œ, μ„ μ–Έ 합침을 μ΄μš©ν•΄μ„œ νƒ€μž…μ„ μΆ”κ°€ν•  수 μžˆλ‹€.
};

 

 

🍬 과제

 

Q1. κ΅¬ν˜„ μ‹œκ·Έλ‹ˆμ²˜λ₯Ό μ™„μ„±ν•˜μ„Έμš”

function add(): number;
function add(a: number): number;
function add(a: number, b: number, c: number): number;


function add(a?: number, b?: number, c?: number) {
  return a || 0 + b || 0 + c || 0;
}

add();
console.log(add(1));
console.log(add(1, 2, 3));

 

Q2. μ‚¬μš©μž μ •μ˜ νƒ€μž… κ°€λ“œλ₯Ό μ™„μ„±ν•˜μ„Έμš”. (νƒ€μž… μˆ˜μ • X)

type Guest = {
  visitCount: number;
};

type Member = {
  id: string;
};

type User = Guest | Member;


function isGuest(user: User): user is Guest {
  if (!(user as Guest).visitCount) {
    return false;
  }
  return true;
}
function isMember(user: User): user is Member {
  if(!(user as Member).id) {
    	return false; 
  }
	return true;
}

 

Q3. μ‚¬μš©μž μ •μ˜ νƒ€μž… κ°€λ“œλ₯Ό μ™„μ„±ν•˜μ„Έμš”. (νƒ€μž… μˆ˜μ • X)

interface Person {
  name: string;
}

interface Student extends Person {
  grade: "A" | "B" | "C";
}
interface Developer extends Person {
  skill: string[];
}
interface Boss extends Person {
  company: string;
}

'lecture recap' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

TS: ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ±Œλ¦°μ§€_day10  (0) 2024.08.09
TS: ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ±Œλ¦°μ§€_day9  (0) 2024.08.09
TS: ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ±Œλ¦°μ§€_day7  (0) 2024.08.09
TS: ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ±Œλ¦°μ§€_day6  (0) 2024.08.09
TS: ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ±Œλ¦°μ§€_day5  (1) 2024.08.09
'lecture recap' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • TS: ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ±Œλ¦°μ§€_day10
  • TS: ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ±Œλ¦°μ§€_day9
  • TS: ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ±Œλ¦°μ§€_day7
  • TS: ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ±Œλ¦°μ§€_day6
nuew
nuew
🀸 재주 λ„˜λŠ” 쀑
  • nuew
    bloggg. . .πŸ¦–πŸ’₯
    nuew
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ 전체보기 (88)
      • issue (10)
      • baekjoon (41)
      • lecture recap (11)
      • What I Learn (26)
      • retrospective (0)
      • maeil-mail (0)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    JavaScript
    Study
    μ½”λ”©ν…ŒμŠ€νŠΈ
    ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ
    Algorithm
    Baekjoon
    TypeScript
    css
    zustand
    TailwindCSS
    λ°±μ€€
    Node.js
    media-query
    modal
    js
    ν•œμž…ν¬κΈ°λ‘œμž˜λΌλ¨ΉλŠ”νƒ€μž…μŠ€ν¬λ¦½νŠΈ
    μ•Œκ³ λ¦¬μ¦˜
    what i learn
    issue
    μžλ°”μŠ€ν¬λ¦½νŠΈ
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
nuew
TS: ν•œμž…ν¬κΈ°λ‘œ μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ±Œλ¦°μ§€_day8
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”