← Index
Source: docs/logs/2026-05-12/typescript-llm-learning-session.md (auto-generated by scripts/generate-docs-html.mjs — edit the .md, not this file)

TypeScript infer + Rust Borrowing + LLM Tokenizer Session

날짜: 2026-05-12
카테고리: Learning · typescript · rust · llm


1. TypeScript — infer 키워드

핵심 개념

TypeScript 타입 시스템은 타입을 계산하는 별도의 프로그래밍 언어다. 타입 컨버트(변환)가 아닌 타입 프로세싱(처리).

infer 패턴

// Promise 안의 타입 추출
type UnwrapPromise<T> = T extends Promise<infer R> ? R : T;

// 함수 첫 번째 인자 타입 추출
type FirstArg<T extends (...args: any) => any> =
  T extends (first: infer F, ...rest: any[]) => any ? F : never;

// 이벤트 핸들러 인자 타입 추출
type EventArg<T extends (event: any) => void> =
  T extends (event: infer E) => void ? E : never;

// 패턴 요약
// Promise<infer R>       → Promise 안의 타입
// (arg: infer A) => any  → 인자 타입
// () => infer R          → 리턴 타입
// Array<infer Item>      → 배열 요소 타입

DeepReadonly — 재귀 타입

type DeepReadonly<T> = { readonly [K in keyof T]: DeepReadonly<T[K]> };
// 재귀 종료: string/number 등 primitive는 keyof가 never → 자동 종료
// Readonly는 겉만, DeepReadonly는 끝까지 잠금

viem ABI 타입 추론


2. Rust — Borrowing Rules

&T  (불변 참조) — 여러 개 동시에 OK, 읽기 전용
&mut T (가변 참조) — 딱 하나만, 혼자만, 읽기+쓰기

&T  + &T      → ✅
&mut T        → ✅ (혼자일 때)
&T  + &mut T  → ❌
&mut T + &mut T → ❌

3. LLM 실습 코드

위치

/Users/jay/work/task/ai/tokenizer-embedding/
├── main.py          — 토큰화 + 임베딩 + 코사인 유사도
├── pyproject.toml   — uv 프로젝트 (tiktoken 의존성)
└── README.md        — 실행 방법 + 기술 설명

실행 방법

cd /Users/jay/work/task/ai/tokenizer-embedding
uv sync                  # 최초 1회 — 환경 생성 + tiktoken 설치
uv run python main.py

Ollama 설치 모델

nomic-embed-text:latest   274 MB   ← 임베딩용 (사용 중)
llama3.3:70b              42 GB    ← 대화/생성용
qwen2.5-coder:32b         19 GB    ← 코딩용

기술 내용

토큰화 — BPE (tiktoken)

임베딩 — nomic-embed-text

코사인 유사도 결과

'betting platform' ↔ 'prediction market' → 0.6580  ← 가장 유사
'blockchain'       ↔ 'prediction market' → 0.4695
'Verex'            ↔ 'prediction market' → 0.4185
'예측시장'          ↔ 'prediction market' → 0.4185  ← Verex와 동일!

→ 한국어 "예측시장"과 영어 "Verex"가 같은 벡터 → 다국어 임베딩 정상 동작

내일 이어서 할 것


4. Morning Report SKILL.md 변경 사항


5. 영어 학습 피드백

Jay 현재 수준: 중급 (6-8/10)

자주 틀리는 패턴:

적용 중인 체크 포맷:

Your version: (원문)
✅ Corrected: (교정)
💬 More natural: (네이티브 표현)
⭐ Fluency score: X/10 — (피드백)