카일_

Programming/TypeScript

Programming/TypeScript

[TS] 타입스크립트의 유용한 기능과 종류

Type Guards(타입가드) Type Guards(타입가드)는 타입스크립트에서 변수의 타입을 보다 구체적으로 유추할 수 있도록 하는 기능이다. 이를 통해 코드의 가독성과 안정성을 높일 수 있다. Type Guard에는 다음과 같은 종류가 있다. typeof Type Guards typeof Type Guards는 JavaScript의 typeof 연산자를 사용하여 변수의 타입을 검사하는 것이다. 예를 들어, 다음과 같이 사용할 수 있다. function printValue(value: string | number) { if (typeof value === 'string') { console.log(`Value is a string with length ${value.length}`); } else {..

Programming/TypeScript

[TS] 타입 쿼리(Type Query)

Type Query(타입 쿼리) Type Query(타입 쿼리)는 특정 타입(Type)을 가져오는 방법이다. 즉, 타입 쿼리를 사용하면 변수, 함수 또는 클래스 등에 대한 타입 정보를 가져올 수 있다. 타입 쿼리는 다음과 같은 두 가지 방법으로 사용할 수 있다. typeof 연산자를 사용하여 변수 또는 함수의 타입 정보를 가져오기 예를 들어, 다음과 같은 코드가 있다고 가정해보자. const person = { name: "John", age: 30 }; function getPersonInfo(person: { name: string; age: number }): void { console.log(`${person.name} is ${person.age} years old`); } 여기서 typeof ..

Programming/TypeScript

[TS] 제네릭(Generic)

Generic(제네릭) Generic(제네릭)은 함수, 클래스, 인터페이스 등의 타입을 일반화하여 재사용성을 높이는 기능이다. 즉, 타입스크립트에서 일반적으로 사용되는 타입을 구체적인 타입으로 대체하여 코드의 재사용성과 유연성을 높일 수 있다. 제네릭을 사용하면 함수나 클래스의 매개변수 또는 반환값의 타입을 미리 지정하지 않고, 실행 시점에 동적으로 타입을 결정할 수 있다. 이를 통해 다양한 타입의 인수를 전달하고 다양한 타입의 값을 반환하는 함수를 만들 수 있다. 제네릭은 대괄호() 안에 타입 변수를 사용하여 정의된다. 이 타입 변수는 일반적으로 대문자로 표시되며, 사용자가 지정하는 타입이다. 예를 들어, 다음은 제네릭 함수를 정의하는 방법이다. function identity(arg: T): T { ..

Programming/TypeScript

[TS] 데코레이터(Decorator)

Decorator 패턴 Decorator 패턴은 객체 지향 디자인 패턴 중 하나로, 객체에 동적으로 새로운 기능을 추가하기 위한 방법이다. 데코레이터 패턴을 사용하면 객체의 수정 없이도 객체의 기능을 확장하고, 코드의 재사용성과 유연성을 높일 수 있다. 타입스크립트에서는 데코레이터 패턴을 사용하여 클래스, 메소드, 프로퍼티 등에 데코레이터를 적용할 수 있다. 데코레이터는 클래스, 메소드, 프로퍼티 앞에 @ 기호를 붙이며, 함수로 구현된다. 데코레이터 함수는 대상이 되는 클래스, 메소드, 프로퍼티를 인자로 받으며, 이들을 수정하거나 대체할 수 있다. 예를 들어, 아래와 같은 클래스가 있다고 가정해보자. class Car { drive() { console.log("Driving"); } } 이 클래스에 데..

Programming/TypeScript

[TS] 클래스의 디자인 패턴 - 2

Command 패턴 Command 패턴은 객체 지향 디자인 패턴 중 하나로, 어떤 작업을 수행하는 명령(Command)을 캡슐화하여 실행할 수 있는 객체로 만들고, 이를 조합하여 원하는 기능을 수행하는 방식을 제공하는 패턴이다. 타입스크립트에서는 Command 패턴을 구현하기 위해 다음과 같은 단계를 따른다. Command 인터페이스 정의하기 Command 인터페이스는 명령(Command)을 수행하는 메소드 execute를 가지고 있다. 이 인터페이스를 구현하는 클래스들은 execute 메소드를 구현하여 각각의 명령을 수행한다. interface Command { execute(): void; } Command 구현하기 Command 인터페이스를 구현하여 각각의 명령(Command)을 구현한다. 이때 각..

Programming/TypeScript

[TS] 클래스의 디자인 패턴 - 1

Singleton 패턴 Singleton 패턴은 애플리케이션 내에서 단 하나의 인스턴스만을 가지도록 보장하는 디자인 패턴이다. 이 패턴을 사용하면 전역 변수를 사용하지 않고, 객체 인스턴스를 공유하여 리소스를 절약할 수 있다. Singleton 패턴을 구현하는 방법은 다음과 같다. Singleton 클래스 생성 Singleton 패턴을 구현하기 위해, 먼저 Singleton 클래스를 생성한다. 이 클래스는 단 하나의 인스턴스만을 가질 수 있도록, private 생성자를 가지고 있다. class Singleton { private static instance: Singleton; private constructor() {} public static getInstance(): Singleton { if (!..

Programming/TypeScript

[TS] 클래스(Class)

Class(클래스) Class(클래스)는 객체를 생성하기 위한 템플릿(Template)이다. 클래스를 사용하면 객체의 속성과 메소드를 묶어서 쉽게 관리할 수 있다. TypeScript에서 클래스를 정의하는 방법은 다음과 같다. class ClassName { // 속성과 메소드 정의 } 위의 코드에서 ClassName은 클래스의 이름이다. 중괄호({}) 안에는 클래스가 가지는 속성(properties)과 메소드(methods)를 정의한다. 속성은 클래스의 데이터를 나타내며, 메소드는 클래스에서 수행하는 동작을 나타낸다. class Person { name: string; age: number; constructor(name: string, age: number) { this.name = name; thi..

Programming/TypeScript

[TS] 함수(Function)

Function(함수) Function(함수)는 특정 작업을 수행하기 위한 코드의 블록이다. 함수는 특정한 입력 (인자)을 받아들이고, 그 입력에 따라서 일련의 계산을 수행한 뒤, 그 결과를 반환할 수 있다. 함수는 모듈화된 코드를 작성할 때 매우 유용하다. 함수는 함수의 인자와 반환 값의 타입을 명시할 수 있다. 이를 통해 함수의 사용자는 함수가 어떤 형태의 인자를 받고, 어떤 형태의 값을 반환하는지 미리 예측할 수 있으며, 이를 기반으로 코드를 작성할 수 있다. 함수의 인자와 반환 값의 타입 명시는 함수를 사용하는 코드의 안정성을 높여준다. 함수의 타입 명시는 함수 선언문 또는 함수 표현식에서 가능하다. 함수 선언문은 함수 이름과 함수 인자를 명시하여 함수를 정의하는 것이며, 함수 표현식은 함수를 변..

Programming/TypeScript

[TS] 타입 연산자(Type Operators)

Type Operators(타입 연산자) 타입스크립트(TypeScript)는 자바스크립트(JavaScript)의 상위 집합 언어로, 정적 타입(static type)을 지원한다. 타입스크립트는 변수, 함수, 객체 등의 값의 타입을 사전에 정의하고, 그것이 잘못 사용되는 것을 방지할 수 있다. 이 때, 타입스크립트에서는 다양한 Type Operators(타입 연산자)를 제공하여 타입 정의를 더욱 유연하게 할 수 있다. Union Type Operator: | (or) 유니언 타입 연산자는 | 기호로 표시된다. 이 연산자는 두 개 이상의 타입을 묶어서 하나의 타입으로 정의할 때 사용된다. 예를 들어, 문자열과 숫자 중에서 하나의 타입을 가지는 변수를 정의하려면 다음과 같이 작성할 수 있다. let myVar..

Programming/TypeScript

[TS] Never | Any | Unknown

Never never는 값이 결코 발생하지 않는 것을 나타내는 타입이다. 이는 함수나 메서드의 반환 타입으로 사용되거나, 변수나 매개변수의 타입으로 사용될 수 있다. 보통 never는 예외를 던지거나 무한 루프 등과 같이 실행이 끝나지 않는 경우에 사용된다. function throwError(message: string): never { throw new Error(message); } 위의 throwError 함수는 항상 예외를 던지므로, 반환 타입으로 never를 사용한다. 이렇게 never를 사용하면, 해당 함수를 호출한 코드에서는 반환값을 받지 않아도 되기 때문에, 예외를 던지는 것과 같은 예기치 않은 동작을 방지할 수 있다. 또한 never는 다른 타입의 서브 타입이 아니기 때문에, 모든 타입..