| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- mocking
- linux 배포판
- Headless 컴포넌트
- prettier-plugin-tailwindcss
- 클라이언트 상태 관리 라이브러리
- react
- 암묵적 타입 변환
- jotai
- 좋은 PR
- Sparkplug
- vue_virtual_scroll_list
- 프로세스
- msw
- AJIT
- 회고
- interface
- 타입 단언
- JavaScript
- 25년 2월
- tanstack_virtual
- Microtask Queue
- 라이브러리_분석
- github actions
- Compound Component
- 명시적 타입 변환
- Render Queue
- CS
- helm-chart
- TypeScript
- docker
- Today
- Total
목록2025/09 (2)
구리
인터페이스와 추상 클래스, 언제 어떻게 써야 할까?react + typescript 관련 책을 보다 아래 예시 코드를 보게 되었다. 여기서 AbstractMenuItem 클래스는 일반 클래스로도 구현할 수 있는데 왜 굳이 추상 클래스로 표현되었는지 의문이었다. 그래서 인터페이스, 추상 클래스를 언제 사용하는지 찾아보며 정리한 글이다.export interface IMenuItem { id: string; name: string; type: string; price: number; ingredients: string[]; calculateDiscount(): number;}export abstract class AbstractMenuItem implements IMenuItem { privat..
이슈로컬 빌드 방식에서 GitHub Actions 기반의 빌드 자동화 방식으로 전환한 뒤, 특정 기능이 정상적으로 동작하지 않는 문제가 발생했다.에러 메시지는 다음과 같다.TypeError: Invalid attempt to spread non-iterable instance.In order to be iterable, non-array objects must have a [Symbol.iterator]() method.원인해당 기능은 코드 변경이 없었기 때문에, 원인은 코드 자체가 아니라 빌드 환경 차이에 있다고 생각했다.로컬 빌드 시에는 문제 없음GitHub Actions 빌드 시 생성된 이미지의 결과물이 달랐음같은 코드가 빌드 결과에서 다음과 같이 달라졌다.# 정상 이미지 js 코드on: { ad..