JavaScript/TypeScript
-
TypeScript | 타입 호환성JavaScript/TypeScript 2020. 5. 7. 12:46
타입 호환성 타입 호환성이란 어떤 타입을 다른 타입으로 취급해도 되는지 판단하는 것 타입 A를 타입 B로 취급해도 되는 것을 할당 가능하다고 하며 타입 A가 타입 B의 서브타입(subtype)이라고 표현하기도 함 정적 타입 언어의 가장 중요한 역할은 타입 호환성을 통해 컴파일 타임에 호환되지 않는 타입을 찾아내는 것 숫자와 문자열의 타입 호환성 숫자와 문자열 타입은 서로 포함 관계에 있지 않기 때문에 서로 할당 가능하지 않음 반면 숫자의 집합은 number | string 값의 집합에 포함되기 때문에 숫자는 number | string 타입에 할당 가능 function func1(a: number, b: number | string){ const v1: number | string = a; const v..
-
TypeScript | Interface 인터페이스JavaScript/TypeScript 2020. 5. 7. 12:34
Interface 인터페이스 타입스크립트에서 인터페이스는 여러 가지 자료형의 타입을 정의하는 용도로 사용 인터페이스로 객체 타입 정의하기 interface 키워드를 사용해서 인터페이스로 타입 정의 interface Person { name: string; age: number; } const p1: Person = { name: 'mike', age: 23 }; const p2: Person = { name: 'mike', age: 'ten' }; // 타입 에러 Person 인터페이스로 객체 내부에 존재하는 각 속성의 타입 정의 하나 이상의 속성 타입을 만족하지 못하면 타입 에러 발생 선택 속성 선택 속성은 객체에 없어도 되는 속성을 말함 인터페이스에서 선택 속성은 ?(물음표) 기호 사용 interfa..
-
TypeScript | 함수형 타입JavaScript/TypeScript 2020. 5. 6. 15:43
함수 타입 함수의 타입을 정의하기 위해서는 매개변수 타입과 반환 타입이 필요 :(콜론)을 이용해서 매개변수 타입 및 반환 타입 정의 함수 타입 정의 function getInfoText(name: string, age: number): string { const nameText = name.substr(0, 10); const ageText = age >= 35 ? 'senior' : 'junior'; return `name: ${nameText}, age: ${ageText}`; } const v1: string = getInfoText('mike', 23); const v2: string = getInfoText('mike', '23'); // 타입 에러 const v3: number = getInf..
-
TypeScript | Enum 열거형 타입JavaScript/TypeScript 2020. 5. 6. 15:13
Enum 열거형 타입 열거형 타입은 enum 키워드를 사용해서 정의 열거형 타입의 각 원소는 값 또는 타입으로 사용 가능 // 열거형 타입으로 과일 정의 enum Fruit { Apple, Banana, Orange } // 열거형 타입의 원소인 Apple을 값으로 사용 const v1: Fruit = Fruit.Apple; // 열거형 타입의 원소인 Apple, Banana를 타입으로 사용 const v2: Fruit.Apple | Fruit.Banana = Fruit.Banana; enum 원소의 값 enum Fruit { Apple, Banana = 5, Orange } console.log(Fruit.Apple, Fruit.Banana, Fruit.Orange); // 0 5 6 열거형 타입의 첫..
-
TypeScript | 개요 & 변수 타입JavaScript/TypeScript 2020. 5. 6. 14:51
TypeScript 자바스크립트의 모든 기능을 포함하면서 정적 타입을 지원하는 언어 동적 타입 언어 VS 정적 타입 언어 동적 타입 언어 정적 타입 언어 타입에 대한 고민을 하지 않아도 되므로 배우기 쉬움 변수를 선언할 때마다 타입을 고민해야 하므로 진입 장벽이 높을 코드의 양이 적을 때 생산성이 높음 코드의 양이 많을 때 동적 타입 언어에 비해 생산성이 높음 타입 오류가 런타임 시 발견 타입 오류가 컴파일 시 발견 ※ 작은 규모의 프로젝트에서는 동적 타입 언어, 큰 큐모의 프로텍트에서는 정적 타입 언어 추천 정적 타입 언어가 생산성이 높은 이유 코드가 타입으로 서로 연결됨 연관된 코드 간의 이동이 쉽고, 변수명이나 함수명을 변경하는 등의 리팩터링도 쉬움 동적 타입 언어에 비해 IDE가 제공하는 기능이 ..