Skip to content

Instantly share code, notes, and snippets.

View DublinCity's full-sized avatar

geonmo.nine DublinCity

  • Seoul, South Korea
View GitHub Profile
@DublinCity
DublinCity / item10-11.md
Last active July 3, 2022 16:30
Item10-11_객체_래퍼타입+잉여_속성_체크

Item10: 객체 래퍼타입 피하기

자바스크립트에서는 기본형을 사용하더라도 경우에 따라 내부적으로 객체 레퍼로 형변환하여 사용한다. 객체 레퍼는 종종 아래와 같이 당황스러운 결과를 보여준다.

function hasName(input: String) {
  return ['A','B'].includes(input) // Type Error
}
@DublinCity
DublinCity / item12.md
Created July 5, 2022 00:38
Item12: 함수 표현식에 타입 적용하기

Item12: 함수 표현식에 타입 적용하기

자바스크립트에서는 함수를 선언할때 함수 문장과 함수 표현식을 사용합니다.

function dice(input) { } // 함수 문장
const dice = (input) => { } // 함수 표현식

타입스크립트에서는 함수 표현식을 사용하는 것이 좋습니다.

@DublinCity
DublinCity / item13.md
Last active July 6, 2022 01:32
Item13: 타입과 인터페이스

Item13: 타입과 인터페이스의 차이

타입스크립트에서 타입을 정의하는 방법은 type, interface 두 가지가 있다. 대부분의 경우 타입 또는 인터페이스를 사용해도 된다. 하지만 타입과 인터페이스 사이에 존재하는 차이를 분명하게 알고, 같은 상황에서는 동일한 방법으로 명명된 타입을 정의해 일관성을 유지해야한다.

타입과 인터페이스 모두 가능한 것

잉여속성체크

@DublinCity
DublinCity / item19.md
Created July 11, 2022 15:09
Item19: 추론 가능한 타입을 사용해 장황한 코드 방지하기

Item19: 추론 가능한 타입을 사용해 장황한 코드 방지하기

타입스크립트를 처음 접했을 때 가장 어려웠던 부분 중 하나는 '언제 타입을 명시적으로 선언하고, 언제 추론된 타입을 이용해야하는지' 판단할 수 없는 것이었다.

타입스크립트의 많은 타입 구문은 사실 불필요하다.

명시적인 타입구문은 대부분 필요하지 않다. 타입 추론이 된다면 불필요한 타입은 가독성을 해치고 오히려 방해가 될 뿐이다. 만약 타입을 확신하지 못한다면 에디터를 통해 체크하면 된다.

@DublinCity
DublinCity / AsyncLocalStorage.md
Last active April 22, 2024 00:13
AsyncLocalStorage

AsyncLocalStorage

어떤 문제가 있나요

우리의 서버로 하나의 request가 들어오면 서버는 응답을 처리하기 위해 필요한 여러 API를 호출하고 데이터를 가공하여 필요한 응답을 돌려줍니다. requset는 동시에 여러개 들어오기 때문에 우리는 request마다 어떤 작업을 수행했는지 그룹핑하여 모니터링하는 것이 필요합니다. 가장 일반적인 방법으로는 요청마다 requestID 를 생성해 할당하고 수행하는 작업마다 requestID 를 함께 기록하여 requestID 단위로 그룹핑해 확인하는 것입니다.

이러한 패턴은 Ruby on rails 나 Python Django 같은 플랫폼에서 매우 간단하게 구현할 수 있는데, 각 request는 하나의 thread에 할당되어 동기로 처리되기 때문에 requestID 와 같은 요청 정보는 thread context 에 저장하여 필요할 때 꺼내 사용하면 되기 때문입니다.