TypeScript는 JavaScript에 정적 타입 검사와 타입 표현을 더한다. 이 문서는 타입 추론·유니온·제네릭·객체 모델을 실제 예제로 설명하고, 컴파일 오류 수정과 외부 주문 데이터 검증을 통해 타입 검사와 런타임 검증의 역할을 구분한다. TypeScript는 JavaScript 코드에 정적 타입 정보를 붙이고 실행 전에 여러 종류의 불일치를 찾아내는 언어와 도구 체계다. 함수가 숫자를 받는다고 선언했는데 문자열을 전
프로그래밍 언어
Parent category
| Category name | Modified | Articles |
|---|---|---|
| 컴퓨터 과학과 프로그래밍 | 0 |
Subcategories
No items have been published yet.
Articles
JavaScript는 웹 브라우저와 서버 등에서 사용되는 프로그래밍 언어다. 이 문서는 값과 타입 변환, 객체와 클로저, 비동기 실행, 화면과 데이터 경계를 예제로 설명하고, 고객별 주문 합계 기능을 구현하고 검증하는 과정까지 다룬다. JavaScript는 웹 페이지의 동작뿐 아니라 서버와 여러 실행 환경에서 사용하는 범용 프로그래밍 언어다. ECMAScript는 핵심 언어 규칙을 정의하고, 브라우저나 Node.js 같은 호스
JavaScript 제너레이터는 실행을 멈추었다가 재개하면서 값을 순차적으로 내보내는 함수 형태이다. function*로 정의하고 yield로 값을 전달한다. 호출하면 제너레이터 객체를 얻으며 next가 실행을 진행해 value와 done 정보를 반환한다. 숫자 구간이나 계산 과정을 필요할 때 한 단계씩 생성해 소비할 수 있다. 여러 번 호출해 만든 객체는 각각 독립된 실행 상태를 가진다. 제너레이터 자체가 비동기 입출력을 자
Proxy는 JavaScript 객체의 속성 읽기·쓰기 같은 기본 동작을 가로채어 정의할 수 있는 기능이다. 대상 객체와 handler를 연결하고 get이나 set 같은 트랩으로 동작을 조정한다. Reflect를 이용해 원래 의미의 연산을 위임할 수 있다. 설정 객체에 값을 쓸 때 범위를 검증하거나 속성을 읽은 사실을 추적하는 도구를 만들 수 있다. 프록시를 통해 접근한 경우에 동작이 적용된다. 객체가 지켜야 하는 불변 조건을
BigInt는 JavaScript에서 Number의 안전한 정수 범위를 넘는 정수 계산을 표현하는 원시 타입이다. 정수 리터럴 뒤에 n을 붙이거나 BigInt로 변환한다. 정수 연산을 제공하지만 소수 표현을 위한 타입은 아니며 Number와 구분된다. 9007199254740993n처럼 큰 식별자나 카운터를 정확한 정수로 보관할 수 있다. 나눗셈 결과의 소수 부분은 유지되지 않는다. Number와 섞은 산술 연산은 명시적인 변
Symbol은 JavaScript의 원시 값 타입으로, 서로 구별되는 식별자나 객체 속성 키를 표현할 수 있다. Symbol()은 고유한 값을 만들며 설명 문자열이 같아도 별개의 값이다. Symbol.for는 공용 레지스트리를 이용하고 잘 알려진 심벌은 언어의 동작 규약에 연결된다. 라이브러리가 객체에 내부 표시를 추가할 때 일반 문자열 키와 이름이 충돌할 가능성을 줄이는 데 사용할 수 있다. 심벌 속성은 강제적인 비밀 저장소
WeakMap은 키를 약하게 참조하여 객체와 관련된 부가 정보를 연결하는 JavaScript 컬렉션이다. 키가 다른 곳에서 더 이상 도달 가능하지 않다면 WeakMap에 들어 있다는 이유만으로 살아남도록 강제하지 않는다. 키 목록 전체를 열거하는 기능은 제공하지 않는다. DOM 노드나 객체에 외부 메타데이터를 연결하되 그 객체의 수명을 불필요하게 늘리고 싶지 않을 때 활용할 수 있다. 가비지 컬렉션 시점을 관찰하거나 특정 시간
Set은 중복 없는 값을 저장하는 JavaScript 내장 컬렉션이다. 값의 존재 여부와 삽입 순서에 따른 순회를 지원한다. add로 값을 추가하고 has로 존재 여부를 검사한다. 같은 값의 재추가는 원소 수를 늘리지 않으며 객체는 참조 정체성으로 구별한다. 숫자 배열을 new Set으로 변환하면 반복된 숫자를 하나씩만 남길 수 있다. 이미 처리한 식별자를 기록하는 데도 쓸 수 있다. 내용이 같은 객체 두 개가 자동으로 중복
Map은 JavaScript에서 키와 값의 대응을 저장하는 내장 컬렉션이다. 키로 문자열뿐 아니라 객체 등 다양한 값을 사용할 수 있다. set, get, has, delete로 항목을 관리하고 삽입 순서에 따라 순회한다. 객체 키는 내용의 구조가 아니라 객체 정체성을 기준으로 비교한다. 사용자 객체마다 처리 상태를 저장할 때 그 객체 자체를 키로 사용할 수 있다. 같은 모양의 새 객체는 기존 키와 다른 것으로 취급된다. 일반
JavaScript 모듈은 import와 export로 코드의 의존성과 공개 항목을 명시하는 단위이다. 모듈은 자체 범위를 가지며 내보낸 값만 다른 모듈에서 명시적으로 가져올 수 있다. 브라우저와 서버 런타임은 로딩 경로와 설정에서 차이가 있다. 날짜 변환 함수를 한 파일에서 export하고 화면 처리 모듈에서 import해 중복 구현을 줄일 수 있다. 브라우저에서는 모듈 스크립트로 로딩한다. 파일 확장자만 바꿨다고 모든 환경
async와 await는 Promise 기반 비동기 처리를 순차적인 코드 형태로 표현하는 JavaScript 문법이다. async 함수는 Promise를 반환하고 await는 그 결과가 준비될 때까지 해당 함수의 진행을 중단한다. 일반적인 try와 catch로 거부된 결과를 다룰 수 있다. async 함수 안에서 await fetch(url)로 응답을 기다리고 이어서 본문을 처리할 수 있다. 독립적인 요청은 함께 시작한 뒤 결
Promise는 비동기 작업의 미래 결과 또는 실패를 표현하는 JavaScript 객체이다. 대기, 이행, 거부 상태를 구분한다. then과 catch로 후속 처리를 연결하면 새 Promise가 만들어진다. 처리기의 반환값이나 발생한 예외가 다음 Promise의 결과에 영향을 준다. 서버 응답을 받은 뒤 내용을 변환하고 실패 시 오류 메시지를 보여 주는 흐름을 연결할 수 있다. 후속 작업도 Promise를 반환하면 완료 시점을
Optional은 값이 있거나 없다는 상태를 표현하는 Java 컨테이너 타입이다. 결과가 없을 수 있는 메서드 반환값에 주로 사용한다. 값이 있으면 변환하거나 소비하고 없으면 기본값을 선택하는 API를 제공한다. Optional 객체 자체를 null로 두지 않는 것이 계약을 명확하게 한다. 사용자 검색 결과를 Optional<User>로 반환하면 호출자가 없는 경우를 orElseGet이나 다른 분기로 처리할 수 있다. 존재 확
Java Stream API는 데이터 원소에 필터·변환·집계 연산을 연결하는 처리 API이다. 스트림 자체는 원소를 보관하는 컬렉션이 아니다. 소스에서 시작해 중간 연산을 연결하고 최종 연산으로 결과를 얻는다. 많은 중간 연산은 지연 평가되며 순차 또는 병렬 처리 방식이 있다. 주문 목록에서 완료된 주문만 filter하고 금액으로 변환한 뒤 합계를 계산하는 흐름을 하나의 파이프라인으로 표현할 수 있다. 스트림은 재사용 가능한
Java 예외 처리는 실행 중 정상 흐름을 벗어난 상황을 예외 객체와 처리기로 전달하는 방식이다. 예외가 발생하면 호출 스택에서 대응하는 처리기를 찾는다. try와 catch로 처리 범위를 정하고 호출자가 처리하도록 예외를 전달할 수도 있다. 파일 읽기에 실패했을 때 원인 예외를 보존하면서 사용자에게 설명할 메시지로 바꿀 수 있다. 복구 가능한 오류와 프로그램 결함을 구분해 대응한다. 예외를 잡고 아무 동작도 하지 않으면 실패
Java 인터페이스는 객체가 제공할 동작의 계약을 타입으로 표현하는 언어 요소이다. 구현 클래스를 특정하지 않고 코드를 연결할 수 있다. 클래스는 인터페이스를 구현하고 호출자는 인터페이스 타입을 통해 메서드를 사용한다. 현대 Java의 인터페이스는 추상 메서드 외에도 정해진 종류의 구현 메서드를 가질 수 있다. 저장 기능을 Repository 인터페이스로 표현하면 메모리 구현과 데이터베이스 구현을 호출 코드와 분리해 교체할 수
Java 가비지 컬렉션은 더 이상 사용하지 않는 힙 메모리를 찾아 재사용하도록 하는 자동 메모리 관리 기능이다. HotSpot은 여러 수집기를 제공하며 처리량, 정지 시간, 메모리 사용량 사이의 목표가 다를 수 있다. 객체의 생존 상태를 추적하고 회수 작업을 수행한다. 대량의 임시 객체를 만드는 서버에서 GC 로그와 지연 시간을 함께 살펴보면 할당량과 수집 정책이 응답 시간에 미치는 영향을 분석할 수 있다. 도달 가능한 객체를
Java 바이트코드는 JVM이 해석하는 명령 형식이다. 일반적인 Java 컴파일 결과는 명령과 타입·메서드 정보를 담은 클래스 파일이다. 피연산자 스택과 지역 변수 슬롯을 사용하는 명령들이 계산과 분기, 호출을 표현한다. 실제 기계어로 실행하는 방법은 JVM 구현이 결정한다. 덧셈과 함수 호출로 작성한 소스는 이에 대응하는 JVM 명령으로 변환된다. 분석 도구로 클래스의 명령과 구조를 살펴볼 수 있다. 클래스 파일 전체를 명령
Python 생성기는 값을 한꺼번에 저장하지 않고 필요할 때 순서대로 내보내는 반복 처리 방식이다. yield를 포함한 함수는 호출 시 생성기 객체를 반환한다. 반복을 진행할 때 다음 yield까지 실행하며 중간의 지역 상태를 유지한다. 큰 로그를 한 줄씩 읽어 조건에 맞는 기록만 내보내면 모든 결과를 미리 리스트에 담지 않아도 된다. 소비자는 for 문으로 순회할 수 있다. 생성기는 보통 한 번 소진하면 같은 객체를 처음부터
unittest는 Python 표준 라이브러리에 포함된 자동 테스트 프레임워크이다. 테스트 사례와 준비·정리 절차, 실행 결과를 구조화한다. TestCase의 검증 메서드로 기대 결과를 확인하고 여러 테스트를 묶어 실행한다. setUp과 tearDown 등으로 각 사례의 환경을 관리할 수 있다. 할인 계산 함수에 정상 가격, 경계값, 잘못된 입력을 넣고 반환값이나 예외가 요구사항과 일치하는지 검사할 수 있다. 테스트가 서로의
Python 타입 힌트는 변수와 함수의 기대 타입을 주석으로 표현하는 기능이다. 정적 분석 도구와 편집기가 코드 사용을 점검하는 데 활용한다. 함수 매개변수와 반환값, 컬렉션 원소 타입 등을 표기한다. typing 모듈은 단순 클래스 이름보다 복잡한 타입 관계를 표현하는 도구를 제공한다. def length(text: str) -> int와 같이 입력과 결과를 명시하면 호출자가 의도를 이해하고 타입 검사기가 잘못된 호출을 찾는
pathlib는 파일 시스템 경로를 객체로 다루는 Python 표준 라이브러리이다. 문자열 조작과 실제 파일 접근을 구분해 제공한다. PurePath 계열은 경로 계산을 하고 Path 계열은 읽기·쓰기 같은 입출력 기능도 제공한다. 실행 운영체제에 맞는 경로 규칙을 사용할 수 있다. Path('data') / 'report.txt'처럼 경로를 조합하고 read_text로 파일을 읽을 수 있다. 구분자를 직접 문자열로 이어 붙이
dataclass는 필드 정의를 바탕으로 초기화와 표현 등 반복적인 메서드를 생성하는 Python 기능이다. @dataclass 데코레이터는 타입 주석이 있는 필드를 읽어 __init__, __repr__, 비교 관련 메서드 등을 설정에 따라 만든다. 좌표 클래스에 x와 y 필드를 선언하면 생성자와 읽기 쉬운 객체 표현을 직접 반복 작성하지 않아도 된다. 필드 기본값도 지정할 수 있다. 타입 주석이 입력 값을 자동으로 검증하는
asyncio는 Python에서 async와 await 문법을 사용해 동시성 코드를 작성하도록 돕는 표준 라이브러리이다. 이벤트 루프가 준비된 작업을 실행하고 코루틴이 비동기 대기 지점에서 실행 기회를 양보한다. 네트워크 입출력, 작업 취소, 동기화 등의 API를 제공한다. 여러 서버의 응답을 기다리는 작업을 태스크로 구성하면 하나의 응답을 기다리는 동안 다른 작업이 진전될 수 있다. CPU 계산이나 동기식 입출력이 루프를 오
venv는 프로젝트별로 Python 패키지 설치 환경을 분리하는 표준 라이브러리 도구이다. 기존 Python 설치를 바탕으로 가상 환경을 만들고 그 환경의 실행 파일과 패키지 경로를 사용한다. 활성화는 셸이 해당 실행 파일을 쉽게 찾도록 돕는다. python -m venv .venv로 환경을 만들고 해당 환경의 Python으로 필요한 의존성을 설치하면 다른 프로젝트와 버전 충돌을 줄일 수 있다. 운영체제나 보안 권한까지 격리하
Python 예외 처리는 실행 중 발생한 오류나 특별한 상황을 정상 흐름과 분리해 처리하는 기능이다. try에서 실행하고 except에서 특정 예외를 처리한다. finally는 정리 작업에 쓰며 raise로 예외를 전달하거나 직접 발생시킬 수 있다. 숫자 입력을 int로 변환할 때 ValueError를 처리하면 잘못된 입력을 사용자에게 설명하고 다시 받을 수 있다. 모든 예외를 무조건 삼키면 원인과 실패 사실을 숨긴다. 예상하
Python 리스트 컴프리헨션은 반복과 선택 조건을 식으로 표현해 새 리스트를 만드는 문법이다. 원소를 순회하면서 변환 식을 평가하고 선택적으로 조건에 맞는 값만 포함한다. 결과를 한 번에 리스트로 만들므로 생성기 식과 메모리 사용 방식이 다르다. [x*x for x in range(5) if x%2 == 0]은 0, 4, 16을 담은 리스트를 만든다. 원래 입력 자료를 직접 수정할 필요가 없다. 중첩 반복이 많아지면 읽기 어
R은 통계 계산과 그래픽을 위한 프로그래밍 언어이자 실행 환경이다. 데이터 처리, 통계 모형, 시각화 기능을 패키지로 확장한다. 벡터와 행렬 등의 데이터에 연산을 적용하고 통계 절차를 코드로 기록한다. 분석 과정과 그림 생성을 함께 자동화할 수 있다. 측정 자료를 읽어 요약 통계와 회귀 모형을 계산하고 결과를 그래프로 표현할 수 있다. 같은 스크립트를 다른 자료에 적용하면 분석 절차를 재사용할 수 있다. 프로그램이 실행됐다는





