[그림으로 쉽게 이해하는 웹/HTTP/네트워크를 읽고 정리합니다.] HTTP = Statelss protocol HTTP는 이전 요청과 응답에 대한 정보를 서버에서 따로 저장하지 않는 무상태 프로토콜이다. 어떤 상태든 상태와 관계없이 지금 들어온 요청에 대한 응답만을 수행하기 때문에 모든 응답과 요청은 독립적이다. 무상태 프로토콜로는 HTTP, IP, UDP가 대표적이다. 반대로 상태 프로토콜도 존재한다. 상태 정보를 저장하는 프로토콜로, 상태에 따라 서버의 응답이 달라질 수 있다. 각 패킷의 전송 상태를 파악하고 신뢰성을 보장하는 TCP가 대표적이다. 무상태 프로토콜의 장점은 서버의 상태를 고려할 필요가 없어 서버를 단순하게 설계할 수 있고, 통신이 갑자기 끊어졌을 때 남겨진 상태를 어떻게 처리해야 할..
인터페이스와 클래스 TS의 인터페이스는 클래스의 설계도 역할을 할 수 있다. 인터페이스를 이용해 클래스에 어떤 필드가 존재하고, 어떤 메서드가 존재하는지 정의할 수 있다. interface CharacterInterface { name: string; moveSpeed: number; move(): void; } // 인터페이스로 클래스를 구현하다 // 인터페이스는 무조건 pubulic class Character implements CharacterInterface { constructor(public name: string, public moveSpeed: number) {} move(): void { console.log(`${this.moveSpeed} 속도로 이동`); } } CharacterI..
접근 제어자(Access Modifier) 클래스의 특정 필드나 메서드에 접근할 수 있는 범위를 설정하는 기능 TS에는 pubilc(모든 범위에서 가능), private(클래스 내부에서만 가능), protected(클래스/파생 클래스 내부에서만 가능)이 있다. public class Employee { // 필드 name: string; // 자동으로 public age: number; // 자동으로 public position: string; // 자동으로 public // 생성자 constructor(name: string, age: number, position: string) { this.name = name; this.age = age; this.position = position; } // 메..
딥다이브를 읽으면서 클래스를 대강 이해하긴 했지만 실제로 사용해본 적은 없었는데, 타입스크립트 강의를 듣던 중 강사님이 자바스크립트의 클래스에 대해서 간단하게 소개해주셨다. 클래스 클래스는 동일한 모양의 객체를 더 쉽게 생성하도록 도와주는 문법이다. 붕어빵 틀이라고 생각하면 된다. let studentA = { name: 'summermong', grade: 'A+', age: 27, study() { console.log('열심 공부'); }, introduce() { console.log('hi'); }, }; 앞으로 studentB, studentC를 만들 때마다 똑같은 구조의 코드를 짜야 하는데, 이러면 번거로워진다. 하나의 틀(클래스)을 만들고 거기에 재료(매개변수)를 넣을 때마다 붕어빵(객체)..
[그림으로 쉽게 이해하는 웹/HTTP/네트워크를 읽고 정리합니다.] HTTP(Hypertext Transfer Protocol) 웹 브라우저와 웹 서버 간에 데이터를 주고 받기 위해 사용하는 프로토콜 HTML같은 하이퍼텍스트 형태의 데이터만 통신할 수 있었지만 오늘날에는 다양한 형식도 전달할 수 있다. HTTP는 클라이언트/서버 모델을 따른다. 이는 서로 관계를 맺고 있는 컴퓨터가 클라이언트, 서버 2가지 역할로 구분되어 있다는 뜻으로, 클라이언트가 서버에게 요청을 보내고, 서버는 그에 대해 응답하는 구조를 말한다. 요청하고 응답하는 과정에서 클라이언트와 서버는 HTTP 메세지를 주고 받으며 통신한다. 이 HTTP 메세지는 클라이언트가 서버에 요청하는 요청 메세지, 서버가 클라이언트의 요청에 응답하는 응..
인터페이스 // 인터페이스 interface Person { name: string; age: number; } const person: Person = { name: "이정환", age : 27 }; 타입 별칭처럼 타입의 이름을 지어주는 문법으로 상호간에 약속된 규칙 상속, 합침 등의 특수한 기능을 제공해 객체의 구조를 정의하는 데 더 특화된 문법 interface Person { readonly name: string; age?: number; } const person: Person = { name: "summermong", // age: 27, }; person.name = 'wintermong' // 읽기 전용으로 수정 불가 선택적 프로퍼티 설정도 동일하게 사용 가능하다. 읽기 전용 키워드인 r..
[그림으로 쉽게 이해하는 웹/HTTP/네트워크를 읽고 정리합니다.] TCP 인터넷 통신을 담당하는 프로토콜 IP는 목적지까지 데이터를 정확하게 '배송'하는 역할만 한다. 데이터가 안전하게 전달되었는지, 주문한 순서대로 왔는지 등 '배송'을 제외한 나머지 부분은 TCP 프로토콜이 담당한다. TCP(Transmission Control Protocol)는 신뢰성 있는 데이터 통신을 위한 프로토콜이다. 패킷 교환 방식의 문제점은 중간에 사라지는 패킷이 생긴다는 것이다. 패킷 교환 방식 이전의 회선 교환 방식이라면 데이터가 있거나, 없거나 둘 중 하나일 텐데 패킷 교환 방식을 사용하니 데이터를 받긴 했는데 이상한 데이터가 올 수도 있다는 문제점이 있었다. 따라서 TCP 프로토콜은 신뢰할 수 있는 데이터를 전달받..
[그림으로 쉽게 이해하는 웹/HTTP/네트워트를 읽고 정리합니다.] IP와 패킷 IP(Internet Protocol)은 패킷을 정해진 목적지까지 운반하는데 사용되는 통신 규약이다. 인터넷의 모든 데이터는 패킷(packet)이라는 조각으로 나뉘어 이동한다. 패킷은 소포를 의미하는 단어로, 데이터를 전송하기 쉽게 쪼갠 모습이 소포와 비슷해 붙여진 이름이다. 데이터를 패킷으로 쪼개 정보를 교환하는 방식을 패킷 교환 방식이라고 한다. 만약 무거운 데이터를 통째로 보내려고 하면 회선에 문제가 생길 시 다시 전송해야 하는 번거로움이 있다. 따라서 패킷으로 쪼개 정보를 전달한다면 전송 중에 잘못된 부분만 다시 보내면 되어 자원 낭비를 줄일 수 있다. 또, 패킷은 최적의 경로를 찾아가기에 특정 경로에 문제가 생기면 ..
함수 타입 함수를 가장 잘 설명하는 방법은 [어떤 타입의 매개변수]를 받고 [어떤 타입의 결과값]을 반환하는지 설명하는 것 // 일반 함수 function func(a: number, b: number): number { return a + b; } // 화살표 함수 const add = (a: number, b: number): number => a + b; 함수의 매개변수 타입이 지정되면 결과값은 TS가 추론한다. // 함수의 매개변수 function introduce(name = 'summermong', tall?: number) { console.log(`name: ${name}`); if (typeof tall === 'number') { console.log(`tall: ${tall + 10}..