👶 TypeScript

👶 TypeScript

에러 처리 - null 반환

null 반환 유저의 생일을 입력받아 Date 객체로 파싱 하는 프로그램을 구현해 봅시다. function ask(){ return prompt('생일 언제임?') } function parse(birthday: string): Date { return new Date(birthday) } let date = parse(ask()) console.info('생일은', date.toISOString()) 단순한 텍스트 입력창을 사용했으므로 사용자가 입력한 내용을 검증해야 합니다. function ask(){ return prompt('생일 언제임?') } function parse(birthday: string): Date | null{ let date = new Date(birthday) if(!isVa..

👶 TypeScript

프로토타입 안전하게 확장하기

프로토타입 안전하게 확장하기 예전엔 프로토타입 확장이 안전하지 않은 일이었지만 이제 TypeScript처럼 정적 타입 시스템을 이용하면 안전하게 확장할 수 있습니다. 예시를 위해 Array 프로토타입에 zip 메서드를 추가해 보겠습니다. 프로토타입을 안전하게 확장하기 위해 두 단계로 진행할 것입니다. 먼저 .ts 파일에서 Array의 프로토타입을 확장한 다음 새로운 zip 메서드를 프로토타입에 추가합니다. // TS에 zip이 무엇인지 설명 interface Array{ // ① zip(list: U[]): [T, U][] } // .zip 구현 Array.prototype.zip = function ( this: T[], // ② list: U[] ): [T, U][] { return this.map(..

👶 TypeScript

이름 기반 타입 흉내내기

이름 기반 타입 흉내내기 예를 들어 몇 가지의 ID 타입이 있는데, 그 각각은 시스템에서 사용하는 서로 다른 종류의 객체를 고유한 방식으로 식별해 준다고 해봅시다. type CompanyID = string type OrderID = string type MemberID = string type ID = CompanyID | OrderID | MemberID MemberID 타입의 값이 "i4want4go4home" 같은 단순 해시값이라고 해봅시다. 따라서 비록 MemberID라는 별칭으로 사용했지만 실질적으론 일반 string입니다. MemberID를 인수로 받는 함수는 다음처럼 정의할 수 있습니다. type CompanyID = string type OrderID = string type Member..

👶 TypeScript

탈출구 - 확실한 할당 어서션

확실한 할당 어서션 TypeScript는 확실한 할당 검사용으로 nonnull 어서션을 적용하는 특별한 상황에 사용할 특수 문법을 제공합니다. let userId: string userId.toUpperCase(); // 'userId' 변수가 할당되기 전에 사용되었습니다.ts(2454) 이 에러 검출은 TypeScript가 제공하는 멋진 서비스입니다. userId 변수를 선언했지만 값을 할당하는 걸 깜빡 잊은 채 대문자 변환 작업을 수행했습니다. TypeScript가 검출해주지 않았다면 런타임 에러가 발생했을 것입니다. 하지만 코드가 다음과 같다면 어떨까요? let userId: string fetchUser() userId.toUpperCase(); // 'userId' 변수가 할당되기 전에 사용되었..

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