μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (νƒ€μž…μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ)

2025. 6. 8. 14:17Β·πŸ“‚ Program Language Study/πŸ“„ TypeScript 곡뢀
 

ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ(TypeScript) κ°•μ˜ | μ΄μ •ν™˜ Winterlood - μΈν”„λŸ°

μ΄μ •ν™˜ Winterlood | ,   ν”„λ‘ νŠΈμ—”λ“œμ˜ ν”Όν•  수 μ—†λŠ” λŒ€μ„Έ νƒ€μž…μŠ€ν¬λ¦½νŠΈ,μ΄μ œλŠ” μ œλŒ€λ‘œ 정볡할 λ•Œκ°€ μ™”μŠ΅λ‹ˆλ‹€! 😎 [사진]μΈν”„μ½˜ 2023 'νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” μ™œ 그럴까?' λ°œν‘œμžμ˜ κ°•μ˜μž…λ‹ˆλ‹€.   🧐 λ°°μ›Œ

www.inflearn.com

 

πŸ“Œ κΈ°λ³Ένƒ€μž…

νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ 자체적으둜 μ œκ³΅ν•˜λŠ” νƒ€μž…λ“€λ‘œ, 각 νƒ€μž…λ“€μ€ λΆ€λͺ¨-μžμ‹ 관계λ₯Ό κ°€μ§€λ©° κ³„μΈ΅μ μœΌλ‘œ ꡬ성

 

πŸ“Œ μ›μ‹œνƒ€μž…κ³Ό λ¦¬ν„°λŸ΄νƒ€μž…

// βœ… μ›μ‹œ νƒ€μž… (Primitive Type)
// → κ°€μž₯ 기본적인 κ°’ λ‹¨μœ„λ‘œ, ν•˜λ‚˜μ˜ κ°’λ§Œ μ €μž₯ν•  수 μžˆλŠ” νƒ€μž…
// number
let num1: number = 123;
let num2: number = -123;
let num3: number = 0.123;
let num4: number = -0.123;
let num5: number = Infinity;
let num6: number = -Infinity;
let num7: number = NaN;

// string
let str1: string = "hello";
let str2: string = 'hello';
let str3: string = `hello`;
let str4: string = `hello ${num1}`;

// boolean
let bool1: boolean = true;
let bool2: boolean = false;

// null
let null1: null = null;

// undefined
let unde1: undefined = undefined;

// βœ… λ¦¬ν„°λŸ΄ νƒ€μž… (Literal Type)
// → νŠΉμ •ν•œ "κ°’ κ·Έ 자체"λ₯Ό νƒ€μž…μœΌλ‘œ μ§€μ •
// → 였직 ν•΄λ‹Ή κ°’λ§Œ ν• λ‹Ή κ°€λŠ₯ (νƒ€μž…μ΄ κ³§ κ°’)
let numA: 10 = 10;              // 숫자 10만 ν• λ‹Ή κ°€λŠ₯
let strA: "hello" = "hello";    // λ¬Έμžμ—΄ "hello"만 ν• λ‹Ή κ°€λŠ₯
let boolA: true = true;         // true만 ν• λ‹Ή κ°€λŠ₯
let boolB: false = false;       // false만 ν• λ‹Ή κ°€λŠ₯

 

πŸ“Œ λ°°μ—΄κ³Ό νŠœν”Œ

// βœ… λ°°μ—΄ (λ™μΌν•œ νƒ€μž…μ˜ 값듀을 μˆœμ„œλŒ€λ‘œ λ‚˜μ—΄ν•œ 자료 ꡬ쑰)
let numArr: number[] = [1, 2, 3];
let strArr: string[] = ["hello", "everyone"];
let boolArr: Array<boolean> = [true, false, true]; // μ œλ„€λ¦­ 방식

// 배열에 λ“€μ–΄κ°€λŠ” μš”μ†Œλ“€μ˜ νƒ€μž…μ΄ λ‹€μ–‘ν•œ 경우 (μœ λ‹ˆμ–Έ νƒ€μž…)
let multiArr: (number | string)[] = [1, "hello"];

// 닀차원 λ°°μ—΄μ˜ νƒ€μž…μ„ μ •μ˜ν•˜λŠ” 방법
let doubleArr: number[][] = [
    [1, 2, 3],
    [4, 5],
];

// βœ… νŠœν”Œ (λ°°μ—΄μ²˜λŸΌ λ³΄μ΄μ§€λ§Œ, 길이와 각 μš”μ†Œμ˜ νƒ€μž…μ΄ κ³ μ •λœ 데이터 ꡬ쑰)
// → 각 μš”μ†Œκ°€ "μ •ν•΄μ§„ 의미"와 νƒ€μž…μ„ κ°€μ§€λŠ” ꡬ쑰에 적합
let tup1: [number, number] = [1, 2];
let tup2: [number, string, boolean] = [1, '2', true];

// νŠœν”Œλ„ 배열이기 λ•Œλ¬Έμ— push, pop λ“± λ©”μ„œλ“œ μ‚¬μš© κ°€λŠ₯
// μ»΄νŒŒμΌλŸ¬λŠ” ν—ˆμš©ν•˜μ§€λ§Œ μ˜λ„λœ ꡬ쑰가 깨질 수 μžˆμœΌλ―€λ‘œ 주의 ν•„μš”
tup1.push(3);

 

πŸ“Œ 객체

// βœ… 객체 νƒ€μž… (객체의 ꡬ쑰λ₯Ό λͺ…ν™•ν•˜κ²Œ μ •μ˜ν•˜κΈ° μœ„ν•œ νƒ€μž…)
let user: {
    id?: number; // ?: 선택적 ν”„λ‘œνΌν‹°
    name: string;
} = {
    name: "κ°•μ—°μˆ˜"
};

let config: {
    readonly apiKey: string // readonly: 읽기 μ „μš© ν”„λ‘œνΌν‹°
} = {
    apiKey: "MY API KEY",
};
// config.apiKey = "NEW KEY"; // ❌

 

πŸ“Œ νƒ€μž… 별칭과 인덱슀 μ‹œκ·Έλ‹ˆμ²˜

// βœ… νƒ€μž… 별칭 (λ³΅μž‘ν•œ 객체 νƒ€μž…μ— 이름을 λΆ™μ—¬ μž¬μ‚¬μš©μ„±μ„ λ†’μ΄λŠ” κΈ°λŠ₯)
// → μ—¬λŸ¬ κ³³μ—μ„œ 반볡적으둜 μ‚¬μš©λ  νƒ€μž… ꡬ쑰λ₯Ό ν•œ λ²ˆμ— μ •μ˜ν•˜κ³  μž¬μ‚¬μš© κ°€λŠ₯
type User = {
    id: number;
    name: string;
    nickname: string;
    birth: string;
    bio: string;
    location: string
};

let user1: User = {
    id: 1,
    name: "κ°•μ—°μˆ˜",
    nickname: "κ°•μˆ˜",
    birth: "2002.05.29",
    bio: "μ•ˆλ…•ν•˜μ„Έμš”",
    location: "λŒ€κ΅¬κ΄‘μ—­μ‹œ"
};

let user2: User = {
    id: 1,
    name: "홍길동",
    nickname: "홍동",
    birth: "1900.01.01",
    bio: "μ•ˆλ…•ν•˜μ„Έμš”",
    location: "μ„œμšΈνŠΉλ³„μ‹œ"
};

// λ™μΌν•œ μŠ€μ½”ν”„ λ‚΄μ—μ„œλŠ” 같은 μ΄λ¦„μ˜ νƒ€μž… 별칭 쀑볡 μ •μ˜ λΆˆκ°€
// ν•¨μˆ˜ λ“± λ‹€λ₯Έ μŠ€μ½”ν”„μ—μ„œλŠ” κ°€λŠ₯
function test() {
    type User = string; // OK: ν•¨μˆ˜ λ‚΄λΆ€μ˜ 별도 μŠ€μ½”ν”„
}

// βœ… 인덱슀 μ‹œκ·Έλ‹ˆμ²˜ (객체의 key κ°œμˆ˜λ‚˜ 이름이 μ •ν•΄μ§€μ§€ μ•Šμ€ 경우 μœ μš©ν•œ 문법)
// → μœ μ—°ν•œ ꡬ쑰의 객체 νƒ€μž… μ •μ˜μ— μ‚¬μš©
type CountryCodes = {
    [key: string] : string; // λͺ¨λ“  keyλŠ” string, λͺ¨λ“  value도 string
    Korea: string;          // λ°˜λ“œμ‹œ ν¬ν•¨λ˜μ–΄μ•Ό ν•  ν”„λ‘œνΌν‹°λ„ λͺ…μ‹œ κ°€λŠ₯
};

let countryCodes: CountryCodes = {
    Korea: "ko",
    UnitedState: "us",
    UnitedKingdom: "uk",
    // ...
};

 

πŸ“Œ Enum νƒ€μž…

// βœ… enum νƒ€μž… (κ΄€λ ¨λœ μƒμˆ˜ 값듀을 ν•˜λ‚˜μ˜ 그룹으둜 μ—΄κ±°ν•˜μ—¬ μ •μ˜ν•˜λŠ” νƒ€μž…)
// → TypeScriptμ—μ„œ μ œκ³΅ν•˜λŠ” μ—΄κ±°ν˜• νƒ€μž…, JS둜 컴파일되면 객체둜 λ³€ν™˜λ¨
enum Role { // μˆ«μžν˜• enum
    ADMIN = 0,
    USER = 1,
    GUEST = 2,
}

enum Language { // λ¬Έμžμ—΄ enum
    korean = "ko",
    english = "en",
}

const user1 = {
    name: "κ°•μ—°μˆ˜",
    role: Role.ADMIN,
    language: Language.korean,
};

const user2 = {
    name: "강말리",
    role: Role.USER,
    language: Language.korean,
};

const user3 = {
    name: "κ°•λ˜₯개",
    role: Role.GUEST,
    language: Language.english,
};

 

πŸ“Œ Any와 Unknown νƒ€μž…

// βœ… any νƒ€μž… (λͺ¨λ“  νƒ€μž…μ„ ν—ˆμš©ν•˜λ©° νƒ€μž… 검사λ₯Ό μƒλž΅ν•˜λŠ” 특수 νƒ€μž…)
// → νƒ€μž… μ•ˆμ •μ„±μ„ ν¬κΈ°ν•˜κ³  μœ μ—°μ„±μ„ κ·ΉλŒ€ν™”ν•  수 μžˆμ§€λ§Œ, μ‚¬μš©μ— μ£Όμ˜κ°€ ν•„μš”ν•œ νƒ€μž…
let anyVar: any = 10;
anyVar = "hello";
anyVar = true;
anyVar = {};
anyVar = () => {};

// νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ νƒ€μž… 검사 무λ ₯ν™” → λŸ°νƒ€μž„ μ—λŸ¬ λ°œμƒ κ°€λŠ₯
anyVar.toUpperCase(); // λ¬Έμžμ—΄μ΄ μ•„λ‹ˆμ–΄λ„ 호좜 κ°€λŠ₯
anyVar.toFixed();     // μˆ«μžκ°€ μ•„λ‹ˆμ–΄λ„ 호좜 κ°€λŠ₯

// μ–΄λ–€ νƒ€μž… λ³€μˆ˜μ—λ„ ν• λ‹Ή κ°€λŠ₯ (νƒ€μž… 검사 X)
let num: number = 10;
num = anyVar; // 문제 없이 톡과됨

// βœ… unknown νƒ€μž… (any와 μœ μ‚¬ν•˜μ§€λ§Œ νƒ€μž… μ•ˆμ „μ„±μ΄ 보μž₯λ˜λŠ” νƒ€μž…)
// → μ–΄λ–€ 값이든 ν• λ‹Ή κ°€λŠ₯ν•˜μ§€λ§Œ, μ‚¬μš© μ „ νƒ€μž… 확인이 ν•„μš”ν•¨
let unknownVar: unknown;
unknownVar = "";
unknownVar = 1;
unknownVar = () => {};

// λ‹€λ₯Έ νƒ€μž… λ³€μˆ˜μ—λŠ” 직접 ν• λ‹Ή λΆˆκ°€
// num = unknownVar; // ❌

// λ©”μ„œλ“œ 호좜, μ—°μ‚° λ“± λΆˆκ°€
// unknownVar.toUpperCase(); // ❌
// unknownVar.toFixed();     // ❌
// unknownVar * 2;           // ❌

// νƒ€μž… κ°€λ“œλ₯Ό 톡해 μ•ˆμ „ν•˜κ²Œ νƒ€μž… 쒁히기
if (typeof unknownVar === "number") {
    num = unknownVar;
    console.log(unknownVar * 2);
}

 

πŸ“Œ Void와 Never νƒ€μž…

// βœ… void νƒ€μž… (값이 μ‘΄μž¬ν•˜μ§€ μ•ŠμŒμ„ λ‚˜νƒ€λ‚΄λŠ” νƒ€μž…)
// → 주둜 "아무것도 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” ν•¨μˆ˜"의 λ°˜ν™˜ νƒ€μž…μœΌλ‘œ μ‚¬μš©λ¨
function func1(): string {
    return "hello";
}

function func2(): void {
    console.log("hello");
}

// voidλŠ” 'undefined'만 ν—ˆμš© (strictNullChecksκ°€ falseλ©΄ 'null'도 κ°€λŠ₯)
let a: void;
a = undefined;
// a = null; // ❌ κΈ°λ³Έ 섀정에선 였λ₯˜ (strictNullChecksκ°€ κΊΌμ Έ μžˆμ–΄μ•Ό κ°€λŠ₯)

// βœ… never νƒ€μž… (μ ˆλŒ€ λ°˜ν™˜λ˜μ§€ μ•ŠμŒμ„ λ‚˜νƒ€λ‚΄λŠ” νƒ€μž…)
// → ν•¨μˆ˜κ°€ "μ •μƒμ μœΌλ‘œ μ’…λ£Œλ˜μ§€ μ•ŠλŠ” 경우"의 λ°˜ν™˜ νƒ€μž…μœΌλ‘œ μ‚¬μš©λ¨
function func3(): never {
    while (true) {}
}

function func4(): never {
    throw new Error();
}

// never νƒ€μž…μ€ μ–΄λ–€ 값도 ν• λ‹Ήν•  수 μ—†μŒ
let b: never;
// b = 1;          // ❌ 였λ₯˜
// b = undefined;  // ❌ 였λ₯˜
// b = null;       // ❌ 였λ₯˜

 

⬇️ λ‹€μŒ λ‚΄μš©μ€ μ•„λž˜ 글을 μ°Έκ³ 

 

μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ΄ν•΄ν•˜κΈ°)

ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ(TypeScript) κ°•μ˜ | μ΄μ •ν™˜ Winterlood - μΈν”„λŸ°μ΄μ •ν™˜ Winterlood | , ν”„λ‘ νŠΈμ—”λ“œμ˜ ν”Όν•  수 μ—†λŠ” λŒ€μ„Έ νƒ€μž…μŠ€ν¬λ¦½νŠΈ,μ΄μ œλŠ” μ œλŒ€λ‘œ 정볡할 λ•Œκ°€ μ™”μŠ΅λ‹ˆλ‹€! 😎 [사진]

isliife2.tistory.com

 

μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'πŸ“‚ Program Language Study > πŸ“„ TypeScript 곡뢀' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (클래슀)  (0) 2025.06.11
μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (μΈν„°νŽ˜μ΄μŠ€)  (0) 2025.06.11
μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (ν•¨μˆ˜μ™€ νƒ€μž…)  (0) 2025.06.11
μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ΄ν•΄ν•˜κΈ°)  (0) 2025.06.09
μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (κ°•μ˜ μ†Œκ°œ 및 νƒ€μž…μŠ€ν¬λ¦½νŠΈ 개둠)  (0) 2025.06.07
'πŸ“‚ Program Language Study/πŸ“„ TypeScript 곡뢀' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (μΈν„°νŽ˜μ΄μŠ€)
  • μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (ν•¨μˆ˜μ™€ νƒ€μž…)
  • μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ΄ν•΄ν•˜κΈ°)
  • μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (κ°•μ˜ μ†Œκ°œ 및 νƒ€μž…μŠ€ν¬λ¦½νŠΈ 개둠)
YeonSu02
YeonSu02
Email : rkddustn2519@naver.com
  • YeonSu02
    IsLiife2
    YeonSu02
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ 전체보기
      • πŸ“‚ Computer Science
      • πŸ“‚ Unity Engine Study
        • πŸ“„ Unity μΈν”„λŸ° κ°•μ˜
        • πŸ“„ Unity 유튜브 κ°•μ˜
        • πŸ“„ Unity μ°Έκ³ 
        • πŸ’» Game Development
      • πŸ“‚ Quality Assurance Study
        • πŸ”₯ μ—˜λ¦¬μŠ€ SW QAνŠΈλž™
        • πŸ“„ QA 곡뢀
        • πŸ“š QA μ±… 리뷰
      • πŸ“‚ Program Language Study
        • πŸ“„ C# 곡뢀
        • πŸ“„ 파이썬 곡뢀
        • πŸ“„ JavaScript 곡뢀
        • πŸ“„ TypeScript 곡뢀
      • πŸ“‚ Additional Study
        • πŸ“„ Git
        • πŸ“„ Docker
        • πŸ“„ Jenkins
        • πŸ“„ Firebase
        • πŸ“„ License
      • πŸ“‚ Experience
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
  • 링크

    • GitHub
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    μ»΄ν™œ
    qa 직무 ꡐ윑
    qa μ±… 리뷰
    μ •μ²˜κΈ° 독학
    qa λΆ€νŠΈμΊ ν”„
    qa κ°•μ˜
    qa μ±…
    μ—˜λ¦¬μŠ€νŠΈλž™ ν›„κΈ°
    qa자격증
    μ •μ²˜κΈ° ν•„κΈ°
    μ»΄ν“¨ν„°ν™œμš©λŠ₯λ ₯
    κ΅­λΉ„λΆ€νŠΈμΊ ν”„ μΆ”μ²œ
    μ—˜λ¦¬μŠ€νŠΈλž™
    μ •μ²˜κΈ° μ‹€κΈ°
    λΆ€νŠΈμΊ ν”„ μΆ”μ²œ
    QA
    istqb-ctfl
    자격증
    ν…ŒμŠ€νŒ…μžκ²©μ¦
    μ—‘μ…€
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
YeonSu02
μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (νƒ€μž…μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ)
μƒλ‹¨μœΌλ‘œ

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