분류 전체보기 174

[TypeScript] 함수 시그니처 타입으로 선언하기

함수를 타입으로 정의하는 방법에 대해 알아보겠습니다. Function Type type Mapper = (x: string) => string; Mapper는 문자열을 받아 다른 문자열을 반환하는 함수 타입을 정의합니다. 예를 들어, (x: string) => string는 문자열을 받아 "멤버: 문자열" 형태의 새로운 문자열을 반환하는 함수를 의미합니다. const runner = (callback: Mapper) => { return ['잘자세연', '누구세연', '안녕하세연'].map(callback); } console.log(runner((x) => `멤버 : ${x}`)); runner 함수는 Mapper 타입의 콜백 함수를 인자로 받아, 문자열 배열에 각 요소에 대해 콜백 함수를 적용한 결과..

Backend/TypeScript 2023.12.22

[TypeScript] 함수 정의하기

TypeScript의 함수에 대해 알아보겠습니다. 함수 정의하기 function returnTwoCouples(person1: string, person2: string): string { return `${person1}과 ${person2}은 닉네임 입니다.` } console.log(returnTwoCouples('잘자세연', '누구세연')); // 잘자세연과 누구세연은 닉네임 입니다. 위의 예시는 TypeScript에서 함수를 정의하는 기본적인 형태입니다. 함수 이름과 파라미터 타입 명시 - function 키워드를 사용하여 함수를 선언합니다. - 함수 이름을 정의하고 괄호 안에 파라미터와 각 파라미터의 타입을 명시합니다. (파라미터 타입은 콜론(:) 다음에 명시!) 리턴 타입 명시 - 콜론(:)..

Backend/TypeScript 2023.12.16

[TypeScript] Narrowing(내로잉)

Narrowing(내로잉) TypeScript에서 특정 코드 블록 내에서 변수의 타입을 더 구체적으로 좁히는 것을 의미합니다. 예를 한번 들어보겠습니다. numberOrString이라는 변수는 number 또는 string이 될 것이라고 선언해 두었습니다. 그리고 값도 입력을 해두었습니다. 이렇게 선언을 하면 string 또는 number가 될 수 있지만 값을 넣어두었기 때문에 마우스를 올려보면 더 구체적인 타입으로 유추되는 것을 확인할 수 있습니다. 이것이 내로잉의 가장 기본이 되는 개념입니다. 우리가 타입을 선언했다고 해도 값을 통해서 TypeScript는 어떤 타입이 될지를 정확하게 유추할 수 있습니다. Narrowing의 종류 1) Assignment Narrowing 변수에 값을 할당함으로써 타..

Backend/TypeScript 2023.11.27

[Baekjoon] 1173번 운동 (Java)

https://www.acmicpc.net/problem/1173 1173번: 운동 첫째 줄에 다섯 정수 N, m, M, T, R이 주어진다. www.acmicpc.net 운동이라는 문제를 Java로 풀이하겠습니다. 이 문제는 영식이가 운동을 하는데 걸리는 최소 시간을 계산하는 문제입니다. 각 분에 대해서 영식이가 운동을 선택하는 경우와 휴식을 선택하는 경우를 고려하여 최소 시간을 계산합니다. 문제에서 주어진 입력 값은 아래와 같습니다. N : 운동하려는 총 시간 m : 초기 맥박 M : 최대 맥박 T : 운동으로 증가하는 맥박 R : 휴식으로 감소하는 맥박 초기에 영식의 맥박은 m이며, 매 분마다 운동을 선택하면 T만큼 맥박이 증가하고, 휴식을 선택하면 R만큼 맥박이 감소합니다. 단, 맥박은 m 이상이..

VO DTO Entity 개념과 차이점

VO, DTO, Entity는 소프트 웨어 개발에서 데이터를 표현하고 다루는 데 사용되는 세 가지 패턴입니다. 항상 사용하고 있지만 정확한 개념과 차이점을 알고 사용하는 것이 좋을 것 같아 정리해 보았습니다. VO (Value Object) 소프트웨어 개발에서 특정 값을 나타내는 객체입니다. 주로 불변(immutable)하게 설계되어 있어서 한 번 생성된 후에는 값을 변경할 수 없습니다. 이는 객체의 안정성과 일관성을 유지하고자 하는 목적에서 나온 개념입니다. VO는 주요 특징은 다음과 같습니다. 불변성(Immutable) VO는 한 번 생성되면 값을 변경할 수 없습니다. 이는 값의 일관성과 안정성을 보장하며, 예측 가능한 동작을 제공합니다. 종속성(Dependabillity) VO는 값을 나타내는 객체..

개발끄적 2023.11.11

[TypeScript] Intersection

Intersection 두 개 이상의 타입을 합쳐 새로운 타입을 만드는 것을 말합니다. Intersection은 '&' 기호를 사용하여 타입을 결합합니다. 이것은 여러 타입의 속성을 모두 갖는 새로운 타입을 생성하는 데 사용됩니다. 간단한 예를 들어보겠습니다. 아래의 두 인터페이스가 있다고 가정해 봅시다. interface Human{ name: string; age: number; } interface Contacts{ phone: string; address: string; } 그리고 Intersection을 사용하여 새로운 타입을 만들어봅시다. type HumanAndContacts = Human & Contacts; let humanAndContacts: HumanAndContacts = { na..

Backend/TypeScript 2023.11.10

[TypeScript] Union

Union TypeScript의 Union(유니온) 타입은 둘 이상의 타입을 허용하도록 하는 타입으로, 여러 종류의 값을 가질 수 있는 변수를 선언할 때 유용합니다. 유니온 타입은 '|' 기호를 사용하여 표시할 수 있습니다. 예를 들어, 다음과 같이 유니온 타입을 사용할 수 있습니다. let val: number | string; // number 또는 string을 가질 수 있는 변수 선언 val = 123; // 숫자 할당 console.log(val); // 123 val = "hello"; // 문자열 할당 console.log(val); // hello 위 예시에서 'val' 변수는 number 또는 string 타입을 가질 수 있습니다. 이를 통해 여러 가지 타입의 값을 단일 변수에 할당하여 ..

Backend/TypeScript 2023.11.08

[TypeScript] Casting (캐스팅)

Casting 캐스팅(Casting)은 변수 또는 값을 특정한 타입으로 강제로 변환하는 과정을 말합니다. 이는 변수의 타입을 컴파일러에게 알려주는 방법입니다. Casting은 실제 구동하는 코드에서 아무런 의미를 갖지 않습니다. JavaScript에서는 존재하지 않는 개념입니다. TypeScript에서 사용합니다. TypeScript에서는 이를 명시적 캐스팅과 암시적 캐스팅으로 나눌 수 있습니다. 명시적 캐스팅(Explicit Casting) 명시적으로 타입을 변환하는 것을 의미합니다. 일반적으로 'as' 키워드를 사용하여 수행됩니다. // 명시적 캐스팅 let someValue: any = "this is a string"; let strLength: number = (someValue as strin..

Backend/TypeScript 2023.11.08

[TypeScript] Type Interface (타입 유추하기)

타입 유추(Type Interface) 개발자가 명시적으로 타입을 지정하지 않아도 TypeScript가 코드를 분석하여 변수 및 함수에 대한 타입을 유추하는 것을 말합니다. 이를 통해 코드 작성 시 타입을 명시적으로 선언하지 않더라도 타입 안정성을 유지할 수 있습니다. 예를 들어 보겠습니다. let을 사용하여 string 데이터를 넣어보겠습니다. 그리고 마우스 커서를 stringType위에 올려보겠습니다. 이렇게 직접적으로 작성하지 않았는데도 string 타입이라고 정확하게 나오는 것을 확인할 수 있습니다. boolean과 number 도 이렇게 잘 추론이 됩니다. 초기화할 때 값을 정확하게 넣어주면 타입으로 잘 추론된다는 것을 확인할 수 있습니다. 위의 booleanType을 boolean 타입으로 변..

Backend/TypeScript 2023.11.05

[Baekjoon] 1049번 기타줄 (Java)

https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 기타줄이라는 문제 Java로 풀이하겠습니다. 이 문제는 N개 이상의 기타 줄을 최소 비용으로 구입하는 방법을 찾는 문제입니다. 가장 적은 비용으로 구매하는 방법은 다음과 같습니다. 패키지로 구입하는 것이 낱개로 구입하는 것보다 이득이면 패키지로만 구입합니다. 낱개로 구입하는 것이 패키지로 구입하는 것보다 이득이면 낱개로만 구입합니다. 패키지와 낱개를 조합하여 구입하는 것이 이득이면 패키지와 낱..