일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 타입스크립트
- 소켓
- 크롤링
- 자바스크립트
- 알고리즘
- 문자열
- Node.js
- socket
- Crawling
- dfs
- HTTP
- BFS
- 백준
- dp
- 프로그래머스
- Nestjs
- type challenge
- 프로그래머스 레벨 2
- 그래프
- 쉬운 문제
- TCP
- HTTP 완벽 가이드
- javascript
- typescript
- ip
- 수학
- Algorithm
- 타입 챌린지
- 가천대
- 레벨 1
- Today
- Total
목록전체 글 (499)
kakasoo
엔티티에 타입 정의하기 export class UserEntity extends CommonCloumns { /** * 이름 칼럼으로 사용자의 이름을 의미 * @minLength 1 * @maxLength 50 */ @Column({ length: 50, select: false }) public name!: string; /** * 사용자의 별칭, 설정하지 않는 경우도 있다. * @minLength 1 * @maxLength 50 */ @Column({ length: 50 }) public nickname!: string; } 각 프로퍼티에는 이처럼, 주석을 통해서 태그를 달 수 있다. 태그가 아닌 주석은 해당 프로퍼티에 대한 description이 되어, 추후 swagger, sdk 생성에 활용된다...
const varToString = varObj => Object.keys(varObj)[0] const someVar = 42 const displayName = varToString({ someVar }) console.log(displayName) 이게 가능할까 싶어서 찾아봤더니, 스택오버플로우에서 이런 코드를 발견했다. 변수의 이름을 알아내기 위해서 Function의 메서드를 사용해야 하나, arguments를 이용한 옛 방식을 써야 하나 했는데 의외다.
import type { Equal, Expect } from '@type-challenges/utils' type X = Promise type Y = Promise type Z = Promise type Z1 = Promise type T = { then: (onfulfilled: (arg: number) => any) => any } type cases = [ Expect, Expect, Expect, Expect, Expect, ] // @ts-expect-error type error = MyAwaited type MyAwaited = T extends PromiseLike ? R : T; // NOTE : 여전히 에러가 나는 케이스 // Expect // Expect infer R을 이용해서,..
import { Injectable, NestInterceptor, ExecutionContext, CallHandler, RequestTimeoutException } from '@nestjs/common'; import { Observable, throwError, TimeoutError } from 'rxjs'; import { catchError, timeout } from 'rxjs/operators'; @Injectable() export class TimeoutInterceptor implements NestInterceptor { intercept(context: ExecutionContext, next: CallHandler): Observable { return next.handle()..
type Chainable = { option(key: K, value: P): Chainable; get(): T; } const result1 = a .option('foo', 123) .option('bar', { value: 'Hello World' }) .option('name', 'type-challenges') .get() const result2 = a .option('name', 'another name' // @ts-expect-error .option('name', 'last name') .get() const result3 = a .option('name', 'another name') // @ts-expect-error .option('name', 123) .get() type E..
이 글을 찾아본 것은 이미 Nestia를 알고 온 사람들일 거라 생각되기 때문에 간단한 설명만 적자면, Nestia란? Node.js, TypeScript 서버의 장점인 클라이언트와 동일한 언어 사용을 극대화하는 라이브러리라고 할 수 있다. 동일한 언어를 사용한다는 것은 서버 개발자가 미리 정의한 타입의 중복 개발을 막을 수 있다는 의미가 된다. 이로 인해 프론트 개발자는 이미 개발된 타입과 SDK를 사용해 좀 더 UI/UX 측면에 집중할 수 있게 된다. 프로젝트 생성 $ npm i -g @nestjs/cli $ nest new project-name 프로젝트 생성은 동일하게 진행해주면 된다. Nestia를 만드신 Samchon님의 레포지토리 예제 대부분은 본인 색채가 강하지만, 아래는 참고할 만 했다...
https://github.com/type-challenges/type-challenges/blob/main/questions/00110-medium-capitalize/README.md GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge Collection of TypeScript type challenges with online judge - GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge github.com Answer type LetterM..
https://github.com/type-challenges/type-challenges/blob/main/questions/00010-medium-tuple-to-union/README.md type Arr = ['1', '2', '3'] type Test = TupleToUnion // expected to be '1' | '2' | '3' answer type TupleToUnion = any type TupleToUnion = T[number]; 답을 먼저 제시한다. 답을 추론해 나가는 과정도 아래 서술하겠지만, 사실 이런 서술을 무시하고도 Tuple을 Union으로 변환하는 게 저게 전부임을, 직관적으로 깨닫는 사람도 분명 있을 거라 생각한다. type TupleToUnion = T['leng..
GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge Collection of TypeScript type challenges with online judge - GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge github.com Implement a generic MyReadonly2 which takes two type argument T and K. K specify the set of properties of T that should set ..
출근길에 뇌과학 영상과 각종 인사이트 글들을 보고 있다. 그러다가 오늘 하나 꽂힌 것이 있는데, 1의 365승은 여전히 1이지만, 1.01의 365승은 37 정도 되는 숫자가 된다는 글이었다. 뻔하다면 뻔한 글이지만, 사소해보이는 노력이 반복될 경우 큰 성장을 이룬다는 내용의 글이었다. 문득 옛날에 봤던 책이 떠올랐다. '원씽 - The One Thing' 이라는 책. 나한테 엄청난 인사이트를 준 책이었다. 그 때는 이 책의 단순한 법칙에 무척이나 감화된 적도 있었다 "10년 후에 대통령이 될 거야." 같은 두루뭉실한 말을 어떻게 객관적이고 과학적으로, 정량화된 목표로 탈바꿈할 수 있을까에 관한 글이었는데, 요지는 간단했다. 다음의 논리만 따라가면 쉽게 이 책을 이해할 수 있을 것이다. 10년 동안 무엇..
docker를 학습하던 중, 이걸 어디에 배포할까 알아보면서 둘의 기능적 차이에 대해 알아보았다. 둘 다 컨테이너 기반으로 서비스를 배포할 수 있게 도와주는데, 둘은 무슨 차이가 있을까? 컨테이너란? 어떤 환경에서도 실행되게 하기 위해, 실행되기 위해 필요한 모든 요소를 포함하고 있는 소프트웨어 패키지를 말한다. 만약 필요하다면 운영체제의 일부분부터 운영체제 전체까지도 포함시킬 수 있다. 이런 모습은 VM ( Virtual Machine ) 과 매우 유사한데, VM과 다른 점은 컨테이너는 운영체제 전체를 포함하는 것이 아니기에 더 가볍다는 점이고, 또 컨테이너가 VM과 달리 하드웨어가 아닌 OS 레벨에서 가상화된다는 점이다. 복잡한 얘기지만, Winodows에서 개발한 것이 개발 환경에서와 배포 환경에서..
Type-Challenge의 문제 설계가 무척이나 잘 되어 있다고 느낀다. 그냥 타입스크립트를 평소에 쓰기만 했던 사람이 Type-Challenge의 문제들을 처음 푼다면 매우 답답할 것이다. 나는 분명 타입스크립트로 서비스를 개발하고 있는 개발자인데 Easy로 되어 있는 문제들도 풀기 어렵지 않은가 하고. 이는 타입스크립트를 사용한다는 말이 만들어낸 착각 같다. 타입스크립트 개발자란 어떻게 보면 그냥 파라미터와 리턴에 타입을 지정하거나 이미 만들어진 타입을 쓴다는 거고, 정확하게 구분한다면 남이 만든 타입을 쓰는 사람과 커스텀 타입을 구현할 수 있는 사람으로 나눠야 마땅할 것이다. 내가 직접 타입을 만드는 것, 어떻게 보면 라이브러리에 들어갈 타입을 구현해내는 것은 그저 쓰는 것과 전혀 다른 일이다. ..