TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day5

2024. 8. 9. 00:42ยทlecture recap

๐Ÿฅ— ์ง„๋„

 

3. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ดํ•ดํ•˜๊ธฐ (6/9)

  • ๊ฐ์ฒด ํƒ€์ž…์˜ ํ˜ธํ™˜์„ฑ
  • ๋Œ€์ˆ˜ ํƒ€์ž…
  • ํƒ€์ž… ์ถ”๋ก 

๐Ÿˆ ์š”์•ฝ !

 

๊ฐ์ฒด ํƒ€์ž…์˜ ํ˜ธํ™˜์„ฑ

// ๊ธฐ๋ณธ ํƒ€์ž… ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ
let num1: number = 10;
let num2: 10 = 10;

num1 = num2; // num2 = num1;

// ๊ฐ์ฒด ํƒ€์ž… ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ
// -> ์–ด๋–ค ๊ฐ์ฒด ํƒ€์ž…์„ ๋‹ค๋ฅธ ๊ฐ์ฒดํƒ€์ž…์œผ๋กœ ์ทจ๊ธ‰ํ•ด๋„ ๊ดœ์ฐฎ์„๊นŒ?!

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

type Dog = {
    name: string;
    color: string;
    breed: string;
};

let animal: Animal = {
    name: "giraffe",
    color: "yellow",
};

let dog: Dog = {
    name: "syrious",
    color: "black",
    breed: "gray hound",
};

animal = dog; // dog = animal;

// ์ดˆ๊ณผ ํ”„๋กœํผํ‹ฐ๊ฒ€์‚ฌ
type Book1 = {
    name: string;
    price: number;
};

let book2: Book1 = {
    name: "dynosour book",
    price: 52000,
    // skill: "algorism",
};

let book3: Book1 = programmingBook;

function func(book: Book) {}
    func({ name: "dynosour book", 
    price: 52000, 
    // skill: "algorism" 
});
    func(programmingBook);

 

๋Œ€์ˆ˜ ํƒ€์ž…

  • ์—ฌ๋Ÿฌ๊ฐœ์˜ ํƒ€์ž…์„ ํ•ฉ์„ฑํ•ด์„œ ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“ค์–ด๋‚ธ ํƒ€์ž…
  • ํ•ฉ์ง‘ํ•ฉ ํƒ€์ž…๊ณผ ๊ต์ง‘ํ•ฉ ํƒ€์ž…์ด ์กด์žฌํ•จ
/**
 *  1. ํ•ฉ์ง‘ํ•ฉ Union Type
 */

let a: string | number | boolean;
a = 1;
a = "hello";
a = true;

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

type Person = {
    name: string;
    language: string;
};

type Union1 = Dog | Person;

let union1:Union1 = {
    name: "",
    color: "",
}

let union2:Union1 = {
    name: "",
    language: "",
}

let union3: Union1 = {
    name: "",
    color: "",
    language: "",
};

// Dog์˜ ์ง‘ํ•ฉ๋„, Person์˜ ์ง‘ํ•ฉ๋„ ์•„๋‹ˆ๋‹ˆ union4๋Š” ๋ถˆ๊ฐ€
// let union4: Union1 = {
//     name: ""
// }


/**
 *  2. ๊ต์ง‘ํ•ฉ Intersection Type
 */

let veriable: number & string;

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

type Person2 = {
    name: string;
    language: string;
};

type Intersection = Dog2 & Person2;

// A & B ์˜ ํƒ€์ž…์ผ ๊ฒฝ์šฐ A์™€ B์˜ ๋‚ด์šฉ๋ฌผ์ด ํ•˜๋‚˜๋ผ๋„ ์—†์œผ๋ฉด ์•ˆ๋œ๋‹ค ๋ชจ๋‘ ๋“ค์–ด๊ฐ€ ์žˆ์–ด์•ผ ํ•จ
let intersection: Intersection = {
    name: "",
    color: "",
    language:  "",
}

 

ํƒ€์ž… ์ถ”๋ก 

/**
 *  ํƒ€์ž… ์ถ”๋ก  Type Inference
 */

let a = 10;
let b = "hello";
let c = {
    id: 1,
    name: "์ง€์€",
    profile: {
        nickname: "jieunw",
        introduce: "nice to meet you",
    },
    urls: ["https://velog.io/@jieunwang"],
};
let { id, name, profile } = c;
let [one, two, three] = [1, "hello", true];

// ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’ ํƒ€์ž…์„ ์ถ”๋ก ํ•  ๋•Œ๋Š” ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฐ’์ด ์•„๋‹Œ 
// return๋ฌธ ๋‹ค์Œ์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ถ”๋ก ํ•จ
function func(message = "hello") {
    return "hello";
}

let d; // ์•”๋ฌต์  any ์ถ”๋ก . ๋ช…์‹œ์ ์œผ๋กœ let d:any ๋กœ ์ •์˜ํ•  ๋•Œ๋Š” ์ง„ํ™” ๊ฐ™์€ ๊ฒƒ ์—†์ด ๊ณ„์† anyํƒ€์ž…์ธ๋ฐ, ์•”๋ฌต์  any๋ฉด ํƒ€์ž… ์ง„ํ™”ํ•จ
d = 10; // <- any ์—์„œ number๋กœ
d.toFixed(1);
d = "hi"; // string์œผ๋กœ
d.toUpperCase();
// Evolution of any type. ์ดˆ๊ธฐ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์•”๋ฌต์ ์œผ๋กœ ์ง„ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ข‹์ง€ ์•Š์€ ๋ฐฉ๋ฒ•
// ๋‚˜์ค‘์— ์•Œ์•„๋งž์ถฐ์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์˜ฌ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ ์ถ”์ฒœํ•˜์ง€ ์•Š์Œ

const num = 10;
const differenceOfConst = "AAAAA"; // const differenceOfConst: "AAAAA"
let differenceOfLet = "BB"; //let differenceOfLet: string
let any = [1, "string"]; // let any: (string | number)[]

// ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์›ฌ๋งŒํ•œ ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ ํƒ€์ž… ์ถ”๋ก ํ•ด์คŒ 
// = > const๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฉด ํƒ€์ž… ๋„“ํžˆ๊ธฐ๋ฅผ ํ†ตํ•ด ํƒ€์ž…์„ ์ถ”๋ก ํ•ด์ค€๋‹ค

 

 

 

๐Ÿด‍โ˜ ๏ธ ๊ณผ์ œ

 

Q1. ์•„๋ž˜ ์ฝ”๋“œ์˜ 4๊ฐœ์˜ ๋ณ€์ˆ˜ a,b,c,d์˜ ํƒ€์ž…์€ ๊ฐ๊ฐ ์–ด๋–ป๊ฒŒ ์ถ”๋ก ๋ ๊นŒ์š”?

let a = 10;
const b = 20;
const c = [1, 2];
const d = [1, "hello", true];
const e = [1, 2, 3] as const;

/* 1-1 ๋ณ€์ˆ˜ a์˜ ํƒ€์ž…์€ ๋ฌด์—‡์œผ๋กœ ์ถ”๋ก ๋ ๊นŒ์š”? */
type A = any;

/* 1-2 ๋ณ€์ˆ˜ b์˜ ํƒ€์ž…์€ ๋ฌด์—‡์œผ๋กœ ์ถ”๋ก ๋ ๊นŒ์š”? */
type B = any;

/* 1-3 ๋ณ€์ˆ˜ c์˜ ํƒ€์ž…์€ ๋ฌด์—‡์œผ๋กœ ์ถ”๋ก ๋ ๊นŒ์š”? */
type C = any;

/* 1-4 ๋ณ€์ˆ˜ d์˜ ํƒ€์ž…์€ ๋ฌด์—‡์œผ๋กœ ์ถ”๋ก ๋ ๊นŒ์š”? */
type D = any;

/* 1-5 ๋ณ€์ˆ˜ e์˜ ํƒ€์ž…์€ ๋ฌด์—‡์œผ๋กœ ์ถ”๋ก ๋ ๊นŒ์š”? */
type E = any;

import { Equal, Expect, NotAny } from "@type-challenges/utils";

type TestCases = [
  Expect<Equal<A, number>>,
  Expect<Equal<B, 20>>,
  Expect<Equal<C, number[]>>,
  Expect<Equal<D, (number | string | boolean)[]>>,
  Expect<Equal<E, [1, 2, 3]>>
];

 

์ œ์ถœ โžก๏ธ

1-1 ) type A = number;

1-2 ) type B = 20;

1-3 ) type C = number[];

1-4 ) type D = (number | string | boolean)[];

1-5 ) type E = [1,2,3];

 

 

Q2. ๋‹ค์Œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๋Š” Animal, DogCat(๊ฐœ๋ƒฅ์ด) ํƒ€์ž…์„ ์™„์„ฑํ•˜์„ธ์š”.

  • Animal ํƒ€์ž…์€ Dog ํƒ€์ž…์ผ ์ˆ˜๋„ Cat ํƒ€์ž…์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • DogCat ํƒ€์ž…์€ Dog์ด์ž Cat์ž…๋‹ˆ๋‹ค.
/* ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ•ด ์˜ค๋ฅ˜๋ฅผ ์ œ๊ฑฐํ•˜์„ธ์š” */
type Dog = {
  name: string;
  color: string;
};

type Cat = {
  name: string;
  age: number;
};

type Animal = never;
type DogCat = never;

/* [Test] ์—ฌ๊ธฐ๋ถ€ํ„ฐ๋Š” ์ •๋‹ต์„ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค */
const animals: Animal[] = [
  {
    name: "ํ† ๋ญ‰์ด",
    color: "brown",
  },
  {
    name: "์จ”๋ฏธ",
    age: 10,
  },
];

const dogCat: DogCat = {
  name: "๊ฐœ๋ƒฅ์ด",
  age: 2,
  color: "์น˜์ฆˆ์ƒ‰",
};

 

์ œ์ถœ โžก๏ธ

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

type Cat = {
  name: string;
  age: number;
};

type Animal = Dog | Cat;
type DogCat = Dog & Cat;

'lecture recap' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day7  (0) 2024.08.09
TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day6  (0) 2024.08.09
TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day4  (0) 2024.08.09
TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day3  (0) 2024.07.26
TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day2  (11) 2024.07.23
'lecture recap' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day7
  • TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day6
  • TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day4
  • TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day3
nuew
nuew
๐Ÿคธ ์žฌ์ฃผ ๋„˜๋Š” ์ค‘
  • nuew
    bloggg. . .๐Ÿฆ–๐Ÿ’ฅ
    nuew
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (88)
      • issue (10)
      • baekjoon (41)
      • lecture recap (11)
      • What I Learn (26)
      • retrospective (0)
      • maeil-mail (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    media-query
    what i learn
    Study
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    ํ•œ์ž…ํฌ๊ธฐ๋กœ์ž˜๋ผ๋จน๋Š”ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ
    js
    JavaScript
    TypeScript
    Algorithm
    ๋ฐฑ์ค€
    css
    issue
    ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ
    Baekjoon
    modal
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    Node.js
    TailwindCSS
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    zustand
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
nuew
TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day5
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”