전체 글
-
[TypeScript] 고급타입-1TypeScript 2022. 9. 21. 23:26
교차 타입(Intersection Types) 교차 타입은 여러 타입을 하나로 결합합니다. Person & Serializable & Loggable 은 Person, Serializable, Loggable 타입의 모든 멤버를 갖습니다. 아래는 믹스인을 만드는 간단한 예제입니다. function extend(first: First, second: Second): First & Second { const result: Partial = {}; for (const prop in first) { if (first.hasOwnProperty(prop)) { (result as First)[prop] = first[prop]; } } for (const prop in second) { if (second.has..
-
[TypeScript] 제네릭TypeScript 2022. 9. 17. 20:54
소개 (Introduction) 잘 정의되고 일관된 API뿐만 아닌 재사용 가능한 컴포넌트를 구축하는 것도 소프트웨어 엔지니어링에서의 주요한 부분입니다. 현재의 데이터와 미래의 데이터 모두를 다룰 수 있는 컴포넌트는 거대한 소프트웨어 시스템을 구성하는 데 있어 가장 유연한 능력을 제공할 것입니다. C#과 Java 같은 언어에서, 재사용 가능한 컴포넌트를 생성하는 도구상자의 주요 도구 중 하나는 제네릭입니다, 즉, 단일 타입이 아닌 다양한 타입에서 작동하는 컴포넌트를 작성할 수 있습니다. 사용자는 제네릭을 통해 여러 타입의 컴포넌트나 자신만의 타입을 사용할 수 있습니다. 제네릭의 Hello World (Hello World of Generics) 먼저 제네릭의 "hello world"인 identity 함..
-
[TypeScript] 열거형TypeScript 2022. 9. 16. 20:54
TypeScript는 숫자와 문자열을 기반으로 한 열거형을 제공합니다. 숫자 열거형 (Numeric enums) 열거형은 enum 키워드를 사용해 정의할 수 있습니다. enum Direction1 { Up = 1, Down, Left, Right, } enum Direction2 { Up, Down, Left, Right, } enum Direction3 { Up, // 0 Down, // 1 Left=3, // 3 Right, // 4 } enum E { Z, // 0 A = getSomeValue(), B, // 오류! 앞에 나온 A가 계산된 멤버이므로 초기화가 필요합니다. } //열거형에 접근하는 방법 console.log(Direction3.Right) Up을 1로 초기화한다면 Down = 2, ..
-
[TypeScript] 클래스TypeScript 2022. 9. 15. 20:53
클래스(FClasses) class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return "Hello, " + this.greeting; } } let greeter = new Greeter("world"); C#이나 Java를 사용해봤다면 익숙한 구문일 것입니다. Greeter 클래스는 프로퍼티인 greeting , 생성자, 메서드인 greet 인 3개의 멤버로 이루어져 있습니다. 클래스의 멤버를 참조할 때 this. 을 앞에 붙여 멤버에 접근하는 것을 알 수 있습니다. new 를 사용하여 Greeter 클래스의 인스턴스를 생성할 수 있습니다. 이전에 작성한 생성자를 호출하..
-
[TypeScript] 유니언과 교차타입TypeScript 2022. 9. 10. 17:15
유니언 타입(Union Types) 유니언 타입은 여러 타입 중 하나가 될 수 있는 값을 의미합니다. 세로 막대(|) 로 각 타입을 구분합니다. number | string | boolean 은 타입이 number 또는 string 또는 boolean 이 될 수 있음을 뜻합니다. 공통 필드를 갖는 유니언(Unions with common Fields) // @errors: 2339 interface Bird { fly(): void; layEggs(): void; } interface Fish { swim(): void; layEggs(): void; } declare function getSmallPet(): Fish | Bird; let pet = getSmallPet(); pet.layEggs();..
-
[TypeScript] 인터페이스TypeScript 2022. 9. 8. 22:56
소개 TypeScript에서, 인터페이스는 이런 타입들의 이름을 짓는 역할을 하고 코드 안의 계약을 정의하는 것뿐만 아니라 프로젝트 외부에서 사용하는 코드의 계약을 정의하는 강력한 방법입니다. 첫 번째 인터페이스 (Our First Interface) function printLabel(labeledObj: { label: string }) { console.log(labeledObj.label); } let myObj = {size: 10, label: "Size 10 Object"}; printLabel(myObj); 타입 검사는 printLabel 호출을 확인합니다. printLabel 함수는 string 타입 label을 갖는 객체를 하나의 매개변수로 가집니다. 이 객체가 실제로는 더 많은 프로퍼..
-
[TypeScript] 기본 타입TypeScript 2022. 9. 7. 21:43
소개(Introduction) TypeScript는 JavaScript와 거의 동일한 데이터 타입을 지원하며, 열거 타입을 사용하여 더 편리하게 사용할 수 있습니다. javascript에서는 열거 타입을 지원하지 않습니다. 형태 대부분의 형태는 아래와 같습니다. let 변수명: 타입 = 값; 1) 불리언(Boolean) 참/거짓(true/false)를 나타내는 값입니다. let isTrue: boolean = false; 2) 숫자(Number) JavaScript처럼 TypeScript의 모든 숫자는 부동 소수 값입니다. TypeScript는 2, 8, 10, 16진수 리터럴을 지원합니다. let decimal: number = 6; let hex: number = 0xf00d; let binary: ..
-
[백준]7570: 줄 세우기(JavaScript)Algorithm/백준 2022. 9. 6. 20:14
https://www.acmicpc.net/problem/7570 7570번: 줄 세우기 입력은 2 개의 줄로 이루어져 있다. 첫 줄에는 어린이 수를 나타내는 정수가 주어진다. 둘째 줄에는 처음에 줄서있는 어린이들의 번호가 차례대로 주어진다. 주어진 번호들 사이에는 공백이 하 www.acmicpc.net 문제 대한 어린이집에 올해 입학한 어린이들이 놀이터에 한 줄로 서있다. 모든 어린이들에게는 입학할 때 주어진 번호가 있고 모두 옷에 번호표를 달고 있다. 그런데 어린이들은 아직 번호 순서대로 줄을 잘 서지 못하므로 선생님이 다음과 같은 방법을 사용해서 번호순서대로 줄을 세우려고 한다. 방법: 줄 서있는 어린이 중 한 명을 선택하여 제일 앞이나 제일 뒤로 보낸다. 위의 방법을 사용할 때 어린이가 이동해서 ..