내일배움캠프_개발일지 (84) 썸네일형 리스트형 TypeScript 연습 <1> -13- ________________________________________________________________________ TypeScript 로 객체 지향 프로그래밍 -4- 다형성 우선 상기해보자. polymorphism, 즉 다형성이란 ‘다른 모양의 코드를 가질 수 있게 하는 것’ 이야. 다형성을 이룰 수 있는 방법은, 제네릭을 사용하는 것. 제네릭은, placeholder 타입을 쓸 수 있도록 해줘. Concrete 타입이 아니라. => 개발자가 제네릭 타입의 변수에 값을 할당하는 순간, 타입스크립트는 placeholder 타입의 제네릭을 co.. TypeScript 연습 <1> -12- ________________________________________________________________________ TypeScript 로 객체 지향 프로그래밍 -3- class, interface 복습 인터페이스는 내가 원하는 메소드와 프로퍼티를 클래스가 가지도록 지시한다. 허나 자바스크립트에서는 인터페이스가 트랜스파일 되지 않아. 추상 클래스와는 다르게. 즉 추상 클래스와 인터페이스가 같은 역할을 한다면 (= 다른 클래스들이 특정 모양을 따르도록 하기 위한 용도) 인터페이스를 사용하는 편이 나아. 프로젝트가 더 가벼워 지거든. 기억해야 할 것. 첫 번째. 타입을 쓰고 싶다면 type 키.. TypeScript 연습 <1> -11- ________________________________________________________________________ TypeScript 로 객체 지향 프로그래밍 -2- Interfaces(2) 이번 챕터에서는 인터페이스(interface) 와 클래스(Class) 를 합쳐보는 연습을 해볼거야. 어째서 인터페이스가 type 에 비해 더 객체 지향적인 문법인지 알 수 있는 대목이지. Class 파트에서 우리는 라는 걸 배웠지. 추상 클래스를 선언하고, Class 해서는 추상 클래스를 extends, 즉 상속 받아 사용하는 문법이였어. 추상 클래스는 다른 .. TypeScript 연습 <1> -10- ________________________________________________________________________ TypeScript 로 객체 지향 프로그래밍 -2- Interfaces(1) 0. ________________________________ —— class Word { constructor ( public term: string, public def : string ) {} } —— => Word 클래스의 프로퍼티들이 지금 퍼블릭 상태야. 왜? —— class Dict { ..... TypeScript 연습 <1> -9- ________________________________________________________________________ TypeScript 로 객체 지향 프로그래밍 -1- Class 타입스크립트는 기존의 자바스크립트 대비 클래스, 인터페이스 같은 객체 지향 기술을 보다 더 멋지고 효과적으로 구현할 수 있어. => 사실 C# 이나 java 를 배웠다면 식은 죽 먹기지. 왜? 타입스크립트 이거 거의 자바 그대론데… 1. ________________________________ —— class Player5 { constructor ( private firstName: string,.. TypeScript 연습 <1> -8- ________________________________________________________________________ TypeScript 에서 함수를 다뤄보자 -4- 제네릭 활용 위에서 우리는 call signatures 로서 제네릭을 작성했어. 그리고 해당 signature 를 가지고 있는 타입을 함수의 타입으로 지정했지. 그런데, 내가 직접 제네릭을 사용해서 call signature 를 만들 일은 거의 없을 거야. 우리는 실무에서 주로 남이 만든 라이브러리와 패키지를 사용하게 될 건데, 해당 라이브러리들은 제네릭을 통해서 정말 많은 함수들을 생성해 내고 있어. 즉, 라이브러리를 만들거나, 다른 개발자가 사용할 기능을 개발하는 경우엔 제네릭.. TypeScript 연습 <1> -7- ________________________________________________________________________ TypeScript 에서 함수를 다뤄보자 -3- Generic 추가 제네릭은 내가 요구한 대로 sinature 를 생성해줄 수 있는 도구야. 1. 제네릭 선언부를 간결하게. —— type SuperPrint = { (arr:TypePlaceHolder[]) : TypePlaceHolder } —— 위를 간단히 하면? —— type SuperPrint = (arr: T[]) => T —— 2. Any 를 사용하지 않고 제네릭을 사용하는 이유 —— type SuperPrint = (arr: T[]) => T const .. TypeScript 연습 <1> -6- ________________________________________________________________________ TypeScript 에서 함수를 다뤄보자 -3- =>타입스크립트는 어떻게 다형성을 제공하는가. ‘제네릭(generic)’ 이라는 걸 통해서 제공한다고. 우선 용어부터 정의하고 가자. “ 다형성 “ 이란 무엇인가. 그리스어로 ‘poly’ 란, many, several, mush, multi 를 뜻해. “Polygon” 흔히 우리가 다각형을 폴리곤이라 부르지? 즉 poly 는 많은, 다수라는 뜻. 다음으로, morphose 혹은 orphic 에 대해서도 알아보자. 해당 단어는 form, structure 즉 형태 또는 구조라는 뜻을 가지고 있.. TypeScript 연습 <1> -5- ________________________________________________________________________ TypeScript 에서 함수를 다뤄보자 -2- 오버로딩이 중요한 점. 실제로 개발에 들어갔을 때 그리 많은 ‘오버로딩 된 함수’ 를 작성 하지는 않을거야. 대신, 난 아마 대부분에 시간을 다른 사람들이 만든 외부 라이브러리를 사용하는데에 투자하게 될 거야. 그러한 패키지나 라이브러리들은 오버로딩을 매우 많이 사용해. 즉, 오버로딩에 대한 개념이 잡혀 있어야지, 다른 사람의 코드들도 잘 읽어낼 수 있다는 뜻. 1. _________________________ < 오버.. TypeScript 연습 <1> -4- ________________________________________________________________________ TypeScript 에서 함수를 다뤄보자 -1- Call Signatures 라는 건 함수 위에 마우스를 올렸을 때 보게 되는 것을 말해. 여태까지 봐 왔던 설명 문구. 예를 들어서 다음과 같은 함수가 있다고 하자. —— const add = (a:number, b:number) => a + b —— => add 위에 마우스를 가져다 대면 다음과 같은 call signatures 가 출력돼. —— const add: (a: number, b: number) => number —— 이를 통해서 우리는 이 함수를 어떻게 호출해야 하는지, 해당 .. 이전 1 2 3 4 5 ··· 9 다음