Knowledge

TIL에서 일반화한 재사용 가능한 지식 문서입니다. 카테고리별로 정리되어 있습니다.

입력 후 350ms 뒤 자동 검색됩니다.

92개의 문서

Updated 2026-08-23frontendInferred

TypeScript 변성 — 공변성과 반공변성

Dog가 Animal의 하위 타입일 때 Dog[]와 (x: Dog) => void도 그 관계를 물려받는지, 어느 방향으로 물려받는지를 정하는 규칙과, strictFunctionTypes를 켜도 메서드 문법에 구멍이 남는 이유

Updated 2026-08-23testingInferred

타입 수준 테스트 — 컴파일러가 남기는 증거

실행 결과가 아니라 컴파일 결과를 검증해 '이 타입이 실제로 어떤 잘못된 코드를 막는가'를 코드로 고정하는 방법과, @ts-expect-error·mutation 검증으로 테스트가 살아 있는지 확인하는 절차

Updated 2026-08-23frontendInferred

제네릭 컨텍스트 팩토리

const 선언에 타입 파라미터를 붙일 수 없다는 제약을 우회해, 제네릭 함수 안에서 context를 만들고 컴포넌트들이 클로저로 붙잡게 하는 패턴과 렌더 중 호출 시 조용히 리마운트되는 함정

Updated 2026-08-14testingInferred

테스트 오라클과 정답의 출처

실행 결과가 맞는지 틀린지를 판정하는 기준을 어디서 가져올지의 문제와, 구현에서 기대값을 역산해 만든 테스트가 아무것도 검증하지 못하는 이유

Updated 2026-08-09browserInferred

브라우저 확장 프로그램의 메시지 기반 RPC

서로 메모리를 공유하지 못하는 확장 프로그램 실행 공간을 메시지 API, runtime 검증, handler 라우팅, 응답 봉투와 변경 알림으로 안전하게 연결하는 방법

Updated 2026-08-07operating-systemInferred

심볼릭 링크와 직접 실행 가드

npm 전역 bin 같은 심볼릭 링크 경로에서 경로 문자열 비교식 main 가드가 조용히 false가 되어 CLI가 exit 0 무출력으로 끝나는 원리와 진단·처방

Updated 2026-08-07networkInferred

rewrite 프록시와 업스트림 리다이렉트 루프

rewrite는 리다이렉트가 아니라 프록시이므로 업스트림의 3xx를 그대로 전달한다 — 캐노니컬 리다이렉트를 하는 오리진을 목적지로 삼을 때 생기는 무한 루프의 원리와 처방

Updated 2026-08-07browserInferred

IME 조합과 커밋 경계

한글 입력에서 조합이 끝나기 전 blur·Enter가 값을 확정해 미완성 문자가 저장되는 문제를 이벤트 순서가 아니라 조합 상태로 해결하는 원리

Updated 2026-07-31frontendVerified

문법 트랜스파일 vs 런타임 폴리필

옛 브라우저 지원은 두 개의 다른 일이다 — 새 문법을 옛 문법으로 바꾸는 트랜스파일과, 없는 API를 코드로 채우는 폴리필. 트랜스파일러는 문법만 바꾸고 런타임 함수는 만들지 않는다

Updated 2026-07-31frontendVerified

하이드레이션 불발과 죽은 이벤트 핸들러

한 화면의 상호작용이 여러 개 동시에 안 먹히면 보통 개별 버그가 아니라 클라이언트 JS가 실행되지 못해 하이드레이션이 통째로 불발된 단일 근본원인이다