분류 전체보기

개발자의 공부/TS

[TS] Union Types + Literal

✅ Union Types 유니온 타입이란 JavaScript의 OR 연산자( || )와 같이 A이거나 B라는 의미의 타입이다. 즉, 유니온 타입을 이용하면 여러 타입의 값을 가질 수 있게된다. let age: number | string | boolean = 21; age = 23; age = "24"; age = true; 적절한 예시는 아니지만 간단한 예시로 유니온 타입을 사용했다. age는 세개의 Type 중 어느 것을 사용해도 상관 없다. type Point = { x: number; y: number; }; type Loc = { lat: number; long: number; }; let coordinates: Point | Loc = { x: 1, y: 34 }; coordinates = {..

개발자의 공부/TS

[TS] Array Types

✅ Array Types 배열에 타입을 지정하는 방법을 살펴보자. 변수를 선언하고 type에 빈배열을 설정했다. 배열에 무언가 하려하거나 숫자를 넣는 등 초기화를 하면 에러가 발생한다. 왜냐하면 타입이 빈 배열이라고 알려두었기 때문에 항상 아무것도 없어야 한다. 그 대신 배열 대괄호 앞에 어떤 타입인지 밝혀줘야 한다. const activeUsers: string[] = ["jeong", "haha"]; 문자열 배열이라는 의미로 원한다면 빈 상태로 시작할 수 있고, 문자열을 넣어줄 수도 있다. const activeUsers = []; 위 코드처럼 빈배열에 타입을 지정하지 않으면 any 혹은 never이 설정된다. 이것은 ts 설정에 의한 것이며, any가 아닌 never로 뜨기 원한다면 tsconfig..

개발자의 공부/JS

[JS]생성자 함수에 의한 객체 생성

✅ 생성자 함수란? new 연산자와 함께 호출하여 객체를 생성하는 함수를 말한다. new 생성자 함수를 통해 생성된 객체를 우리는 인스턴스 라고 부른다. 이와 별개로, 자바스크립트에서는 Object, String, Number, Boolean 등과 같은 별도의 빌트인 생성자 함수를 제공한다. 🤔 생성자 함수를 이용하여 객체를 만드는 이유? 왜 생성자 함수를 이용하여 객체를 만드는가? 기존에 객체를 만들기 위해 {}를 이용한 리터럴 표현식을 사용하여 객체를 생성하였다. 아래 코드처럼 말이다. const circle = { radius: 5, getDiameter() { return 2 * this.radius; } }; console.log(circle.getDiameter()); 객체 리터럴 방식에 의한..

개발자의 공부/TS

[TS] 객체 타입

✅ TypeScript의 객체 TS에서의 객체는 JS와 똑같이 표현된다. const dpg = { name: 'Elton', breed: "Australian Shpherd", age: 0.5 } 타입 추론에 의해 name과 breed는 string 타입, age는 number 타입으로 할당된다. 함수에서 매개변수로 객체를 받는다면 어떻게될까? 직접해보자. const printName = (name: { first: string; last: string }): void => { console.log(`${name.first} ${name.last}`); }; printName이라는 함수에 name객체를 파라미터로 받고 있다. name 파라미터의 키로 first, last가 오며 type은 string이다..

개발자의 공부/TS

[TS]Object

✅ TypeScript의 객체 TS에서의 객체는 JS와 똑같이 표현된다. const dpg = { name: 'Elton', breed: "Australian Shpherd", age: 0.5 } 타입 추론에 의해 name과 breed는 string, age는 number로 할당된다. 함수에서 매개변수로 객체를 받는다면 어떻게될까? 직접해보자. const printName = (name: { first: string; last: string }): void => { console.log(`${name.first} ${name.last}`); }; printName이라는 함수에 name객체를 파라미터로 받고 있다. name 파라미터의 키로 first, last가 오며 type은 string이다. 파라미터를..

개발자의 공부/TS

[TS]any, unknown

✅ any 어떤 타입이어도 상관없는 타입이다. 이걸 최대한 쓰지 않는 게 핵심이다. 왜냐면 컴파일 타임에 타입 체크가 정상적으로 이뤄지지 않기 때문이다. 그래서 컴파일 옵션 중에는 any를 써야 하는데 쓰지 않으면 오류를 뱉도록 하는 옵션도 있다. -noImplicitAny function returnAny(message): any { // error console.log(message); } const any1 = returnAny('리턴은 아무거나') any1.toString() any는 계속해서 개체를 통해 전파된다. 결국, 모든 편의에 의해 any를 사용하는 순간 타입 안정성을 잃는 대가로 온다는 것을 알아야 한다. 타입 안정성은 TS를 사용하는 주요 동기 중 하나이며 필요하지 않은 경우에는 an..

개발자의 공부/TS

[TS]Type Annotation, Type Inference

Type Annotation 변수에 기본 타입을 할당하기 위해 변수 이름뒤에 :Type 을 추가한다. 이렇게 특정한 변수 혹은 특정한 개체 등에 어떤 타입이라고 지정해주는 일을 'Type Annotation' 이라고 한다. let myVar: type = value const, let, var로 변수의 이름을 선언하고 콜론(:)과 타입을 쓴다. 타입은 소문자로 작성한다. 대부분의 경우 필요하지 않다. 실제로 변수를 작성할 때는 타입 추론(Inference)을 사용하면 된다. let movieTitle: string = "Maze Runner"; movieTitle = "Arrival"; movieTitle = 9; // Error; Type 'number' is not assignable to type ..

개발자의 공부/자료구조&알고리즘

[정렬 알고리즘]비교를 수행하지 않는 Radix Sort

지금까지 정리한 정렬들은 비교 정렬 알고리즘이다. 버블 정렬에 대해 다루거나, 더 발전된 퀵 정렬을 다루더라도 결국 본질적으로 기본 비교는 주어진 시점에서 두 개의 항목을 비교한다. 주어진 시간에 비교하는 최대량이다. Bubble Sort - O(n^2), Insertion Sort - O(n^2), Selection Sort - O(n^2) 개선된 정렬 비교 알고리즘. Quick Sort - O(n log n), Merge Sort - O(n log n) 더 빠른 정렬 알고리즘이 있을까? Yes, 하지만 비교를 통해서는 아니다. 수학적으로 제한이 있기에 비교 정렬의 기대할 수 있는 최상의 시간 복잡도는 n log n이다. 기수 정렬 - Radix Sort 비교를 수행하지 않는 특별한 정렬 알고리즘이고,..

JMins
'분류 전체보기' 카테고리의 글 목록 (5 Page)