MapleStory Finger Point
[TypeScript] 함수 오버로딩
·
🟣 TypeScript
함수 오버로딩은 하나의 함수가 매개변수의 개수나 타입에 따라 여러가지 버전으로 만드는 문법이다.타입스크립트에서 이를 구현하려면 오버로드 시그니쳐와 구현 시그니쳐를 각각 작성해야 한다. 1. 오버로드 시그니쳐 (Overload Signature)함수의 선언부만 작성하여, 이 함수가 어떤 매개변수 조합으로 호출될 수 있는지 정의한다. 구현부({})는 포함하지 않는다. 버전1: 매개변수 1개 👉🏻 이 매개변수에 20을 곱한 값 출력버전2: 매개변수 2개 👉🏻 이 매개변수들을 다 더한 값을 출력// 버전 1: 매개변수 1개function func(a: number): void;// 버전 2: 매개변수 3개function func(a: number, b: number, c: number): void;위 코..
[타입스크립트] 타입의 호환성
·
🟣 TypeScript
함수 타입의 호환성이란, 특정 함수 타입을 다른 함수 타입으로 취급해도 안전한지(할당 가능한지)를 판단하는 기준이다. 두 가지 요소에 의해 결정된다.반환값(Return Type)이 호환되는가? 공변성 (Covariance)매개변수(Parameter)이 호환되는가? 반공변성 (Contravariance)1. 기준: 반환값 타입 (공변성)반환값은 '출력(Output)'이다. 할당받는 쪽(Target)이 기대하는 타입보다 할당되는 쪽(Source)의 타입이 더 구체적(서브타입)이거나 같으면 호환된다. 반환값끼리 업캐스팅이 된거는 호환된다. 이를 공변성이라 한다.규칙: Target ⊇ Source (반환값 타입이 더 넓거나 같아야 함)예시: number를 기대하는 변수에 10( 넘버 리터럴)을 반환하는 함수를..
[자료구조] 단일 연결 리스트 (Push, Pop)
·
📜 알고리즘&자료구조
1. 연결 리스트(Linked List)란 무엇인가?연결 리스트는 문자열, 숫자 등 원하는 데이터를 저장하는 자료 구조다.배열(Array)처럼 순서에 따라 다수의 데이터를 저장하지만, 구조적으로 큰 차이가 있다.배열(Array) vs 연결 리스트(Linked List)배열연결 리스트순서대로 인덱스가 부여된다.인덱스가 없다.삽입과 삭제가 오래 걸릴 수 있다.next 포인터를 가진 노드들을 통해 연결된다.특정 인덱스에 빠르게 접근할 수 있다.임의 접근이 허용되지 않는다(예를 들어: "열 번째" 항목이 필요할 경우 바로 그 값을 얻을 수 없다.) 2. 연결 리스트의 구조와 용어🚂 연결 리스트는 마치 객차들이 연속으로 연결된 기차와 같다. 노드(Node): 리스트를 구성하는 각 요소를 말한다. 각 노드는 '데..
[TypeScript] 함수 타입 표현식과 호출 시그니쳐
·
🟣 TypeScript
1. 함수 타입 표현식 (Function Type Expression)타입 별칭을 사용하여 화살표 함수 문법으로 타입을 정의하는 방식이다.특징: 함수 선언과 타입 선언을 분리할 수 있어 코드가 간결해진다.활용: 사칙연산 함수들처럼 매개변수와 반환값의 구조가 동일한 경우, 하나의 타입으로 일괄 적용할 수 있다.// 타입 별칭으로 정의type Operation = (a: number, b: number) => number;// 동일한 타입을 여러 함수에 재사용const add: Operation = (a, b) => a + b;const sub: Operation = (a, b) => a - b;// 이렇게도 사용가능const multipy: (a: number, b: number) => number = (..
[TypeScript] 함수 타입
·
🟣 TypeScript
함수의 타입은 매개변수와 반환값의 타입으로 결정된다. 함수를 설명하는 가장 좋은 방법[자바스크립트 ver] 어떤 매개변수를 받고, 어떠 떤 결과값을 받는지 얘기한다.[타입스크립트 ver] 어떤 [타입의] 매개변수를 받고 어떤 [타입의] 결과값을 반환하는지 얘기한다.1. 기본 타입 정의자바스크립트 함수 선언 방식에 매개변수와 반환값의 타입을 추가하여 정의한다.화살표 함수 또한 동일한 방식으로 정의한다. 단, 반환값의 타입은 타입스크립트가 자동으로 추론하므로 생략할 수 있다.// 함수 선언식function func(a: number, b: number): number { return a + b;}// 화살표 함수 (반환 타입 생략 가능)const add = (a: number, b: number) => a..
[TypeScript] 서로소 유니온 타입
·
🟣 TypeScript
서로소 유니온 타입은 교집합이 없는 타입들👉🏻서로소 관계에 있는 타입들을 모아 만든 유니온 타입을 말한다.(두 타입 간에 공통적으로 포함된 값이 하나도 없는 타입, 교집합이 하나도 없는것을 서로소 관계라고 한다.) 이를 활용하면 타입 가드(Type Guard)를 훨씬 직관적으로 구현할 수 있다.1. 문제 상황: 직관적이지 않은 타입 분기역할별로 프로퍼티가 다른 3개의 타입(Admin, Member, Guest)이 있고, 이를 하나로 묶은 User 타입이 있다고 가정하자type Admin = { name: string; kickCount: number; };type Member = { name: string; point: number; };type Guest = { name: string; visitC..
[알고리즘] 클래스
·
📜 알고리즘&자료구조
1. 클래스(Class)란 무엇인가?클래스에 익숙하지 않다면 '청사진(Blueprint)' 혹은 '설계도'라고 생각하면 쉽다.클래스(Class): 객체를 생성하기 위한 틀(설계도), 사전에 정의된 속성과 메서드를 담고 있다.인스턴스(Instance): 설계도를 바탕으로 실제로 생성된 객체예시: 자바스크립트의 Array 우리가 흔히 쓰는 배열(Array)도 일종의 패턴(청사진)이 존재한다.배열을 위한 패턴이 미리 정의되어 있고 (push, pop 등의 기능 포함)우리가 new Array()나 [ ]를 선언하는 순간,그 패턴을 바탕으로 실제 사용 가능한 배열 객체가 인스턴스화되는 것이다.우리는 앞으로 SinglyLinkedList라는 청사진(Class)을 만들고, 이를 통해 수많은 리스트 객체(Instanc..
[알고리즘] 자료구조
·
📜 알고리즘&자료구조
1. 자료 구조의 종류단방향/양방향 연결 리스트 (Singly/Doubly Linked Lists)이진 검색 트리 (Binary Search Trees), 이진 힙 (Binary Heaps)그래프 (Graphs - 방향/비방향, 가중/비가중)스택 (Stacks), 큐 (Queues), 우선순위 큐 (Priority Queues)해시 테이블 (Hash Tables) 2. 자료 구조란 무엇인가?정의: 값(Value)들의 모음이자, 그 값들 사이의 관계(예: 순서, 부모-자식 관계 등)를 포함하는 구조기능: 데이터의 삽입, 제거, 접근, 정렬 등을 수행하는 고유의 메소드(Push, Pop 등)를 가진다.구현: 이미 사용해 본 배열(Array)이나 객체(Object)처럼, 우리만의 구조를 클래스 형태로 정의하고..
[TypeScript] 타입 좁히기 (Type Narrowing)
·
🟣 TypeScript
타입 좁히기는 조건문 등을 이용해 넓은 타입(유니온 타입 등)에서 더 구체적이고 좁은 타입으로 범위를 축소하는 과정을 말한다. 👉🏻 컴파일러에게 특정 코드 블록 내에서는 변수가 특정 타입임을 보장할 수 있다.이때 타입을 좁히기 위해 사용하는 조건식 표현(typeof, instanceof 등)을 타입 가드(Type Guard)라고 부른다.1. typeof 타입 가드자바스크립트의 기본 연산자인 typeof를 사용하여 원시 타입(Primitive Type)을 좁힐 때 주로 사용한다.function func(value: number | string) { // ❌ Error: value가 number인지 string인지 확신할 수 없음 // value.toFixed(); if (typeof value ..