일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트
- 가천대
- 알고리즘
- 프로그래머스
- dfs
- 그래프
- type challenge
- HTTP
- 크롤링
- 쉬운 문제
- BFS
- 프로그래머스 레벨 2
- Nestjs
- 백준
- HTTP 완벽 가이드
- 문자열
- 타입스크립트
- Node.js
- ip
- 타입 챌린지
- TCP
- Algorithm
- 수학
- 레벨 1
- Crawling
- typescript
- javascript
- 소켓
- socket
- dp
- Today
- Total
목록타입스크립트 (6)
kakasoo
문자열로 이루어진 배열을 받아 Join하는 타입을 구현했다. type ToString= T extends string ? T : never; type ToStringTuple= T extends string[] ? T : never; type Join = T extends [infer F, ...infer Rest] ? Rest extends [] ? `${ToString}` : `${ToString}${U}${Join}` : ''; https://kscodebase.tistory.com/709 타입 레벨에서 문자열 Join 구현하기 2 https://kscodebase.tistory.com/682 타입 레벨에서 문자열 Join 구현하기 type ToString= T extends string ? T :..
type Shift = T extends [infer F, ...infer Rest] ? Rest : []; 타입 레벨에서 배열의 첫 요소를 제거하는 코드는 이렇게나 간단하다.
/** * wrong case */ // type StartsWith = `${U}${string}` extends `${T}` ? true : false; type StartsWith = T extends `${U}${string}` ? true : false; 처음에는 위에 주석처럼 풀고 동작하지 않는 것을 보았다. U에 string을 추가한 것만큼이 결국 T가 아닌가 생각했지만, 'ab'와 string을 조합한 것이 'abc'보다 크다는 걸 뒤늦게 깨달은 것이다. 그래서 extends 문에서의 비교 순서를 거꾸로 하여 T가 U에 string 타입을 더해 더 긴 문자열을 만든 것에 포함된다는 걸로 바꾸었다. type EndsWith = T extends `${string}..
// type StringToUnion = T extends `${infer F}${infer S}` ? (F | StringToUnion) : T; type StringToUnion = T extends '' ? never : T extends `${infer F}${infer S}` ? (F | StringToUnion) : T; T가 만약 infer F와 S로 이루어진 문자열이라면 F와 나머지 문자에 대해서 StringToUnion을 재귀적으로 푼 결과를 유니온으로 받는다. 만약 그러한 문자열이 아니면 T를 받는다. 단, 문자열 T가 빈 문자열인 경우에는 해당 식은 성립하지 않기 때문에 T ( = '' ) 를 리턴하는 문제가 있다. 따라서 빈 문자를 유니온 조합에서 제거하기 위해 맨 앞에 T ext..
타입 챌린지의 문제인데, 미디움에 있었다. 끔찍한 수준의 난이도인데 이게 왜 medium인지 모르겠다. 아래에 문제를 이해하기 위해 필요한 지식과 해석 순서를 모두 기재하였으니 참고하도록 하자. 문제, 그리고 필요로 하는 결과 type cases = [ Expect, Expect, Expect, Expect, Expect, ] 분산적 조건 타입 type Singular = T extends never ? true : false; type IfAnySingular = Singular; // boolean 타입스크립트 핸드북 - 분산적 조건 타입 Documentation - Conditional Types Create types which act like if statements in the type sys..
type AppendArgument any), A> = (rest:[...Parameters, A]) => ReturnType; type AppendArgument any), A> = (...rest:[...Parameters, A]) => ReturnType; 처음에는 위처럼 작성했다. 하지만 구현된 결과물을 보니 rest는 배열 형태를 타입으로 가지고 있었다. 즉, 배열을 받는 배열이지, a,b,x... 형태의 파라미터들을 각각 받는 함수가 아니었다. 그래서 전개 연산을 추가했다. a,b,x 라는 식별자 이름으로 인해서 이걸 어떻게 객체 형태로 풀어 쓰느냐 고민했지만, 생각해보니 이건 함수라서 식별자 이름은 아무래도 상관없었다. 전개 연산을 추가하니 쉽게 해결되었다.