👶 TypeScript

👶 TypeScript

비동기 프로그래밍, 동시성과 병렬성

비동기 프로그래밍, 동시성과 병렬성 실무의 응용 프로그램에선 네트워크 요청을 보내고 데이터베이스 및 파일 시스템과 상호 작용하며, 사용자의 동작에 응답하고, CPU를 많이 소비하는 작업을 별도의 스레드에서 수행해야 하므로 콜백(callback), 프로미스(promise), 스트림(stream) 등 다양한 비동기 API를 사용하게 됩니다. JavaScript는 이런 비동기 작업을 처리할 때 위력을 발휘하며, 멀티스레드를 지원하는 자바나 C++ 등의 다른 주류 언어와 비교하기 어려울 정도의 차별성을 보입니다. V8, SpiderMonkey 같은 유명한 JavaScript 엔진은 태스크 멀티플렉싱 기법을 영리하게 이용하여, 여러 스레드를 이용하던 기존 방식과 달리 스레드 하나로 비동기 작업을 처리합니다. 스레..

👶 TypeScript

에러 처리 - Option 타입

Option 타입 특수 목적 데이터 타입을 사용해 예외를 표현하는 방법도 있습니다. 이 방식은 값과 에러의 유니온을 반환하는 방법에 비해 단점이 있지만, 에러가 발생할 수 있는 계산에 여러 연산을 연쇄적으로 수행할 수 있게 됩니다. 가장 많이 사용되는 세 가지로 Try, Option, Either 타입이 있습니다. Try, Option, Either 데이터 타입은 Array, Error, Map, Promise 등과는 달리 JavaScript가 기본적으로 제공하지 않습니다. 따라서 이 타입들을 사용하려면 NPM에서 찾아 설치하거나 직접 구현해야 합니다. Option 타입은 하스켈, 오캐멀, 스칼라, 러스트(Rust) 등의 언어에서 가져온 개념입니다. 어떤 특정 값을 반환하는 대신 값을 포함하거나 포함하지..

👶 TypeScript

에러 처리 - 예외 반환

예외 반환 TypeScript는 자바가 아니며 throws 문을 지원하지 않습니다. 참고로 throws 문은 메서드가 어떤 종류의 런타임 예외를 발생시킬 수 있는지 알려주어서 해당 메서드의 사용자가 발생 가능한 에러를 적절하게 처리할 수 있도록 도와줍니다. 하지만 유니온 타입을 이용해 비슷하게 흉내 낼 수 있습니다. function ask() { return prompt("생일 언제임?"); } // 커스텀 에러 타입 class InvalidDateFormatError extends RangeError{} class DateISInTheFutureError extends RangeError{} /** * * @throw {InvalidDateFormatError} : 사용자가 생일을 잘못 입력함 * @t..

👶 TypeScript

에러 처리 - 예외 던지기

예외 던지기 문제가 발생하면 null 반환 대신 예외를 던지겠습니다. 그러면 어떤 문제냐에 따라 대처가 가능할 수 있고, 디버깅에 도움 되는 메타 데이터도 얻을 수 있습니다. function ask() { return prompt("생일 언제임?"); } function parse(birthday: string): Date { let date = new Date(birthday); if (!isValid(date)) { throw new RangeError('YYYY/MM/DD 로 입력하셈여') } return date; } 이제 이 코드를 사용할 때 전체 응용 프로그램이 크래시 되지 않도록 매끄럽게 처리하기 위해 주의해서 예외를 잡아야 합니다. function ask() { return prompt("..

개발자 린다씨
'👶 TypeScript' 카테고리의 글 목록 (4 Page)