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

2024. 7. 26. 04:11ยทlecture recap

๐Ÿช ์ง„๋„

 

2. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ง„๋„ (6/8)

  • ๋ฐฐ์—ด๊ณผ ํŠœํ”Œ
  • ๊ฐ์ฒด
  • ํƒ€์ž… ๋ณ„์นญ๊ณผ ์‹œ๊ทธ๋‹ˆ์ณ
  • Enum ํƒ€์ž…

 

๋ฐฐ์—ด๊ณผ ํŠœํ”Œ

// ๋ฐฐ์—ด
let numArr: number[] = [1, 2, 3];
let strArr: string[] = ["hello", "im", "jieun"];

// ์ œ๋„ค๋ฆญ ๋ฌธ๋ฒ• (Array<> ์ฒ˜๋Ÿผ ๊บฝ์‡  ์ด์šฉ)
let boolArr: Array<boolean> = [true, false, true];

 

Array<> ํ˜•ํƒœ๋กœ๋„ ๋ฐฐ์—ด์˜ ํƒ€์ž…์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๋ฌธ๋ฒ•์„ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์ œ๋„ค๋ฆญ ๋ฌธ๋ฒ•์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

// ๋ฐฐ์—ด์— ๋“ค์–ด๊ฐ€๋Š” ์š”์†Œ์˜ ํƒ€์ž…์ด ๋‹ค์–‘ํ•œ ๊ฒฝ์šฐ (์œ ๋‹ˆ์˜จ ๋ฌธ๋ฒ• |)
let multiArr: (number | string)[] = [1, "A", "B"];

// ๋‹ค์ฐจ์› ๋ฐฐ์—ด
let doubleArr: number[][] = [
    [1, 2, 3],
    [4, 5, 6],
];

 

number | string ์ฒ˜๋Ÿผ ๋ฐ”(|)๋ฅผ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ ํƒ€์ž… ์ค‘ ํ•˜๋‚˜๋ฅผ ๋งŒ์กฑํ•˜๋Š” ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ๋ฌธ๋ฒ•์„ ์œ ๋‹ˆ์˜จ ํƒ€์ž… ๋ฌธ๋ฒ•์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

// ํŠœํ”Œ : ๊ธธ์ด์™€ ํƒ€์ž…์ด ๊ณ ์ •๋œ ๋ฐฐ์—ด
let tup1: [number, number] = [31, 2];
let tup2: [number, string, boolean] = [1, "A", true];

const users:[string, number][] = [
    ['๊ฐ€๋‚˜๋‹ค', 1],
    ['๋งˆ๋ฐ”์‚ฌ', 2],
    ['์•„์ž์ฐจ', 3],
    ['์ด์ง€์น˜', 4],
  	[5, '์–ด๋ผ๋ผ'] // error , ํƒ€์ž… ์ˆœ์„œ๊ฐ€ ๊ณ ์ •๋˜์–ด์žˆ์Œ
]

 

๊ฐ์ฒด

// ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ํƒ€์ž…
// ์ด๋ ‡๊ฒŒ ํ”„๋กœํผํ‹ฐ ๋ณ„ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๋ฉด ์  ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
// ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํƒ€์ž…์„ ์ง€์ • = ๊ตฌ์กฐ์  ํƒ€์ž… ์‹œ์Šคํ…œ(property based typesystem)
// ๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ชฉ์  ํƒ€์ž…์‹œ์Šคํ…œ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๊ตฌ์กฐ์  ํƒ€์ž…์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•œ๋‹ค.

let user: {
    id?: number;
    name: string;
} = {
    id: 1,
    name: "๊ฐ€๋‚˜๋‹ค",
};

// id?: number์ฒ˜๋Ÿผ ?๋ฅผ ๋ถ™์—ฌ์„œ ์žˆ์–ด๋„ ์—†์–ด๋„ ์ƒ๊ด€์—†๋Š” ํ”„๋กœํผํ‹ฐ์—๊ฒŒ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค
// ์ด๋ ‡๊ฒŒ ?๊ฐ€ ๋ถ™์—ฌ์ง„ ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ ํƒ์  ํ”„๋กœํผํ‹ฐ (optional property)๋ผ๊ณ  ํ•œ๋‹ค

user = {
    name: "์šฐ์ฃผ",
};

let config: {
    readonly apiKey: string;
} = {
    apiKey: "Secret KEY",
};

// config.apiKey = "hacked";

 

ํƒ€์ž… ๋ณ„์นญ

// ํƒ€์ž… ๋ณ„์นญ
// ๊ฐ™์€ ์Šค์ฝ”ํ”„ ๋‚ด์—์„œ ์ด๋ฆ„ ์ค‘๋ณต x, ์ปดํŒŒ์ผ๋˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ ๋ฐ”๋€Œ๋ฉด์„œ ํƒ€์ž…๋ณ„์นญ ์ •์˜๋Š” ์‚ฌ๋ผ์ง.

import { type } from "os";

type User = {
    id: number;
    name: string;
    nickname: string;
    birth: string;
    bio: string;
    location: string;
};

let user: User = {
    id: 1,
    name: "์ผ€๋กœ๋กœ",
    nickname: "์ค‘์‚ฌ",
    birth: "1000.01.01",
    bio: "๊ฑด๋‹ด",
    location: "ํผ๋ ๋ณ„",
};

// ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜
// key์™€ value์˜ ๊ทœ์น™์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ์ฒด์˜ ํƒ€์ž…์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•
// ์ด ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•˜์ง€๋งŒ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋œจ์ง€ ์•Š์Œ. 
// ๋นˆ ๊ฐ์ฒด์—ฌ๋„ ์˜ค๋ฅ˜ ์•ˆ๋œธ (์œ„๋ฐ˜ํ•  ๊ฒŒ ์—†์–ด์„œ)

type CountryCodes = {
    [key: string]: string;
};
let countryCodes:CountryCodes = {
    Korea: "KO",
    UnitedKingdom: "UK",
    UnitedState: "US",
};

// ์ถ”๊ฐ€์ ์ธ key์˜ value์˜ ํƒ€์ž…์ด ๋ฐ˜๋“œ์‹œ ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜์˜ value์™€ ์ผ์น˜ํ•˜๊ฑฐ๋‚˜ ํ˜ธํ™˜ํ•ด์•ผํ•œ๋‹ค.

type CountryNumberCodes = {
    [key: string]: number;
    // Korea: string; ์ด๋ฉด ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜์˜ value์™€ ์ผ์น˜ํ•˜๊ฑฐ๋‚˜ ํ˜ธํ™˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์˜ค๋ฅ˜๋ฐœ์ƒ
    Korea: number;
};

let countryNumberCodes:CountryNumberCodes = {
    Korea: 410,
    UnitedState: 840,
    UnitedKingdom: 826,
}

 

Enum ํƒ€์ž…

// enum type
// ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ฐ’๋“ค์— ๊ฐ๊ฐ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•ด ์—ด๊ฑฐํ•ด๋‘๊ณ  ์‚ฌ์šฉํ•˜๋Š” ํƒ€์ž…
// ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด๋กœ ์ปดํŒŒ์ผ ๊ฒฐ๊ณผ์— ๋‚จ์•„์žˆ์Œ.

enum Role {
    ADMIN, 
    USER,
    GUEST,
// ์ฒ˜์Œ key๊ฐ’์— ์ž๋™์œผ๋กœ 0์ด ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์œ„์ฒ˜๋Ÿผ ๋”ฐ๋กœ number๋ฅผ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•„๋„ 0, 1, 2๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ž๋™ ์ง€์ •๋œ๋‹ค.
// ๋งŒ์•ฝ USER = 10, ๋ผ๊ณ  value๋ฅผ ์ง€์ •ํ•˜๋ฉด ์ˆœ์„œ๋Œ€๋กœ 0, 10, 11์˜ ๊ฐ’์ด ๋œ๋‹ค.
}

enum Language {
    korean = "ko",
    english = "en",
    japanese = "jp",
}

const user1 = {
    name: "๊ฐ€๋‚˜๋‹ค",
    role: Role.ADMIN,
    language: Language.korean,
};

const user2 = { name: "๋ผ๋งˆ๋ฐ”", role: Role.USER, language: Language.english };
const user3 = { name: "์‚ฌ์•„์ž", role: Role.GUEST, language: Language.japanese };

console.log(user1, user2, user3);

 

๊ณผ์ œ

 

Q. ๋‹ค์Œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๋Š” 4๊ฐœ์˜ ํƒ€์ž…์„ ์ •์˜ํ•˜์„ธ์š”.

  • _Any ํƒ€์ž…์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • Nums ํƒ€์ž…์€ ์ˆซ์ž๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด ํƒ€์ž…์ž…๋‹ˆ๋‹ค.
  • Colors ํƒ€์ž…์€ ๋ฌธ์ž์—ด๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด ํƒ€์ž…์ž…๋‹ˆ๋‹ค.
  • Coords ํƒ€์ž…์€ [์ˆซ์ž, ์ˆซ์ž] ํ˜•ํƒœ์˜ ๋ฐฐ์—ด๋งŒ ํ—ˆ์šฉํ•˜๋Š” ํƒ€์ž…์ž…๋‹ˆ๋‹ค.
  • Info ํƒ€์ž…์€ [์ˆซ์ž, ๋ฌธ์ž์—ด] ํ˜•ํƒœ์˜ ๋ฐฐ์—ด๋งŒ ํ—ˆ์šฉํ•˜๋Š” ํƒ€์ž…์ž…๋‹ˆ๋‹ค.
type Nums = never;
type Colors = never;
type Coords = never;
type Info = never;

 

โฌ‡๏ธ

type Nums = number[];
type Colors = string[];
type Coords = [number, number];
type Info = [string, number];

 

Q. ๋‹ค์Œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๋Š” Course ํƒ€์ž…์„ ์ •์˜ํ•˜์„ธ์š”.

  • _Any ํƒ€์ž…์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • Course ํƒ€์ž…์€ ์˜จ๋ผ์ธ ๊ฐ•์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด ํƒ€์ž…์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๋Š” name ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๋Š” price ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๋Š” student_cnt ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๋Š” author ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์ž์—ด ๋ฐฐ์—ด์„ ์ €์žฅํ•˜๋Š” related_courses ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
type Course = never; 

 

โฌ‡๏ธ

type Course = {
  name: string;
  price: number;
  student_cnt: number;
  author: string;
  related_courses: string[];
};

 

Q. ๋‹ค์Œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๋Š” User ํƒ€์ž…์„ ๊ตฌํ˜„ํ•˜์„ธ์š”.

  • _Any ํƒ€์ž…์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด ํƒ€์ž…์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • String ํƒ€์ž…์˜ name ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • String ํƒ€์ž…์˜ email ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ ์™ธ์˜ String ํƒ€์ž…์˜ ๋™์  ํ”„๋กœํผํ‹ฐ๋“ค๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
type User = never;

โฌ‡๏ธ

type User = {
 name: string;
  email: string;
  [key: string]: string;
};

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

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

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

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

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

  • ์ตœ๊ทผ ๊ธ€

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

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