본문 바로가기

프론트엔드/TypeScript31

제네릭 타입을 임의로 정해서 사용자가 함수를 사용할 때 직접 지정해줄 수 있다. 제네릭 함수 선언 - 동시에 여러 타입을 지정해 줄 수 있다. function helloBasic(message: T, commet: U): T { return message; } 타입을 선언하여 사용하는 방법 - 선언한 타입과 반드시 같은 타입을 입력해주어야 한다. // 직접 타입을 지정하는 방법 // 타입이 달라서 에러 발생 // helloBasic(39); // 정상 출력 helloBasic("message", 1); 타입을 추론하는 방법 // 타입이 추론되어진다. helloBasic(36, 33); 배열 형태로 선언하는 방법 //제네릭 함수 배열 선언 function helloArray(message: T[]): T { //.. 2021. 6. 22.
Abstract Class Abstract: 완전하지 않은 클래스, new로 바로 선언하여 사용하지 못한다. 사용하기 위해서는 상속받은 다음에 기능을 완성시킨후 사용한다. 예제 TS파일 abstract class AbstractPerson { protected _name: string = 'Mark'; // 내용을 구현하지 않는다. abstract setname(name: string):void; } // 기능이 완성되지 않았기 때문에 에러가 발생한다. // const p66 = new AbstractPerson(); // 상속하여 사용 class Person66 extends AbstractPerson { setname(name: string): void { console.log(this._name); this._name = n.. 2021. 6. 21.
Class - 상속 클래스가 어떠한 다른 클래스의 기능을 가져다가 사용할 때 상속받아 사용한다. private, protected 키워드를 이용해서 각자의 영역에서 서로의 영역을 오염시키지 않도록 조심하는것이 중요 예제 TS 파일 class Parent { constructor(protected _name: string, private _age: number){} public print(): void { console.log(`이름은 ${this._name} 이고, 나이는 ${this._age} 입니다.`); } protected printname(): void { console.log(this._name, this._age); } } const p331 = new Parent('Mark', 22); p331.print().. 2021. 6. 21.
class - singleton 패턴 사용자가 직접 접근이 불가능하고 Class를 통해서만 접근가능하도록 설계 예제 TS 파일 class ClassName { private static instance: ClassName | null = null; public static getInstance(): ClassName{ // Classname으로 부터 만든 object가 없으면 만든다. if (ClassName.instance === null){ // class 내부이기 때문에 호출 가능 ClassName.instance = new ClassName(); } // ClassName으로 부터 만든 object가 있으면 그걸 리턴 return ClassName.instance; } // new로 생성하지 못하도록 한다. private constr.. 2021. 6. 21.
class - Static Properties 와 Method static을 붙여서 클래스명을 직접적으로 선언하여 해당 메소드나 변수를 불러올 수 있다. 예제 TS 파일 class Person56 { public static CITY = "Seoul"; public static hello(){ console.log("안녕하세요", Person56.CITY, this.CITY); } } const p56 = new Person56(); // object에서 사용 불가능하다. // p56.hello(); // p56.CITY = "aaa"; // 클래스에서 직접적으로 가져올 수 있다. Person56.hello(); console.log(Person56.CITY); 컴파일된 JS 파일 "use strict"; class Person56 { static hello() {.. 2021. 6. 21.
class - index Signatures index를 이용하여 변수명을 사용자가 원하는 값으로 넣어줄수 있다. 예제 TS 파일 // class => object // {mark: 'male', jade: 'male'} // {chloe: 'female', alex: 'male', anna: 'female'} class Students { [index: string]: "male" | "female"; } const a = new Students(); a.mark = "male"; a.jade = "male"; console.log(a); const b = new Students(); b.cloe = "female"; b.alex = "male"; b.anna = "female"; console.log(b); 컴파일된 JS 파일 "use stri.. 2021. 6. 21.