프로그래밍 (90) 썸네일형 리스트형 09. 고급 타입 09. 고급 타입 9.1 유니언 타입과 타입 가드 유니언 타입은 여러 타입을 받을 수 있다는 장점이 있습니다. 하지만, 여러 타입을 받음으로서 타입을 확신할 수 없다는 문제도 있습니다. 따라서 매개변수가 유니언 타입일 때 안전한 값을 할당하려면 타입 검사를 거쳐야 합니다. 이처럼 유니언 타입에 대해 타입검사를 통해 타입 안정성을 주는 방법을 타입가드 라고 합니다. 타입 가드(type guards) typeof나 instanceof 연산자를 사용해 타입 질의를 한 후 명시된 타입과 일치하는지 검사합니다. --------------------------------------------------------- //union-typeof.ts function myIndexOf(x: number | string,.. 08.모듈 08. 모듈 : 독립 가능한 기능의 단위 자주사용하는 공통 기능을 모듈로 정의해 사용하면, 앱의 수정없이 모듈의 수정과 교체만으로 코드를 효과적으로 수정할 수 있습니다. 장점 1) 유지보수가 쉬워진다. : 중복 코드 개선 2) 전역 스코프 오염 방지 : 전역 스코프는 global namespace 이므로 변수나 함수이름을 중복해서 선언할수 없습니다. 모듈 내부에 변수나 함수를 선언하면 namespace가 파일 단위로 제한되어 global namespace를 침범하지 않습니다. 3) 재사용성 reusability : 모듈은 프로젝트에서 자주 사용되는 공통기능으로 자주 호출될 가능성이 높습니다. 모듈화를 잘 해두면 다른 프로젝트에도 공유해 지사용하 수 있습니다. - modular programming 1) .. 07.클래스와 인터페이스 기반의 다형성 7.3.3 클래스와 인터페이스 기반의 다형성 1. 클래스의 다형성 --------------------------------------------------------- class Planet { public diameter: number; // 지름 public isTransduction: boolean = true; // 공전 getIsTransduction(): boolean { return this.isTransduction; } stopTransduction(): void { console.log("stop1"); this.isTransduction = false; } } class Earth extends Planet { public features: string[] =["soil", "wat.. 07. 클래스와 인터페이스 7.2 인터페이스 인터페이스는 자바스크립트(ES6)에서는 지원하지 않습니다. 인터페이스는 타입이며 컴파일 후에는 사라집니다. 추상클래스는 선언과 구현이 모두 존재하지만, 인터페이스는 선언만 존재합니다. 멤버 변수와 함수를 선언할 수 있지만, 접근제한자는 설정할 수 없습니다. 자식 인터페이스는 여러 부모 인터페이스를 다중상속할 수 있습니다. 7.2.2 인터페이스의 역할과 컴파일 결과 분석 자바스크립트 객체는 구조를 고정할 수 없고 쉽게 변화하는 특성이 있습니다. 객체는 유지보수와 확장, 안정성을 고려해 선언과 동시에 고정할 필요가 있습니다. 인터페이스를 이용하면 객체의 구조를 고정할 수 있습니다. 인터페이스는 컴파일 과정에서 타입 검사의 용도로 사용되고, 컴파일 후에는 제거됩니다. P.208 인터페이스 사.. 06. 함수 06. 함수 태초에 javascript에 기명함수와 익명함수가 있었다. 기명함수의 경우 var와 마찬가지로 hoisting 문제가 발생했다. ex) myFunction(1, 2); function myFunction(a, b) {} // 함수 선언부 전에 함수 호출이 가능해져 코드가 복잡해지는 문제 이를 해결하기 위한 방법은 변수에 익명함수를 할당하는 것이다. ex) let resultMultiple = function(a, b) { return a * b; } // 익명함수는 함수 선언 전에는 호출이 불가하다. TypeScript는 함수의 매개변수와 반환타입에 모두 타입을 명시하여 함수내부에 타입 검증을 하는 불필요한 코드를 삭제하거나, 의도치 않은 캐스팅에 대비하도록 한다. function max(x.. 04. 조건문, 제어문 / 05. 연산자 04. 조건문, 제어문 1. for number type -> 0 : false, else : true string type -> "" : false, else : true for in : index for of : value for (let index in array) { } for (const value of array) { } for of 의 경우 변수에 const를 쓸 수 있다. 일반 for문에서는 const를 사용하면 상수값이 바뀌지 않기때문에 무한루프를 돈다. 하지만 for of 문은 Symbol.iterator의 구현을 통해 각 이터레이션 값의 요소를 가져오기 때문에 const를 사용할 수 있다. 2. map, set map, set은 ES5로 컴파일되지 않는다. 하지만 map을 사용하지 않.. 03. 변수 03. 변수 1. 변수의 선언과 기본 타입 - var hoisting이 된다. block level scope X - let block level scope O 변수를 초기화하기전에 접근불가하게 하여 hoisting을 방지한다. - const 상수. 선언시 초기화는 가능하지만 재할당되지 않는다. read only, Type anootation을 추가하지 않아도 자동으로 type이 추론된다. block level scope O * const에서도 객체 리터럴의 속성값은 변경이 가능하다. (P.81) Typescript에서 값 재할당하는 것은 허용하지 않으나 속성값 변경은 허용하는 특성이 있다. 2. 타입검사 정적 타입 검사 (statically type checking) : Java, C++ 동적 타입 검.. 0.1 TypeScript 란? 01. 타입스크립트 란? ES6 부터 모듈방식이 새롭게 추가되었다. 개발에는 static type과 dynamic type 이 있다. Static type : compile time 에 type check => Typescript Dynamic type : runtime 에 type check => Javascript Typescript = Javascript + Type : 확장된 자바스크립트. Java나 C# 같은 형태를 띈 Script 언어. 함수, 변수, 클래스의 타입지정이 가능하다. - ES6, Java, C# 과의 차이점 (P.8) 1) ES6에 없는 interface 선언 및 구현이 가능하다. 2) Java는 다중생성자가 가능하나 TypeScript는 단일생성자만 가능하다. 3) Java와 .. 이전 1 2 3 4 5 6 7 ··· 12 다음