Agent skill
typescript
TypeScript 타입 정의 및 베스트 프랙티스 스킬. 다음 상황에서 사용: (1) TypeScript 파일(.ts, .tsx) 작성 또는 수정 시, (2) 타입 정의(interface, type) 작업 시, (3) tsconfig.json 설정 또는 컴파일러 옵션 조정 시, (4) 타입 에러 해결 또는 타입 안전성 개선 시, (5) 제네릭, 유틸리티 타입, 타입 조작 작업 시, (6) 'typescript', 'ts', 'type', 'interface', 'generic' 키워드가 포함된 작업 시
Install this agent skill to your Project
npx add-skill https://github.com/DaleStudy/skills/tree/main/skills/typescript
Metadata
Additional technical details for this skill
- author
- DaleStudy
- version
- 1.0.0
SKILL.md
TypeScript
TypeScript 핸드북 기반 타입 정의 및 베스트 프랙티스. 기본 문법·타입 조작·유틸리티 타입 상세는 references/ 및 Handbook 참고.
기본 원칙
1. 타입 추론 활용
불필요한 어노테이션 생략. 변경 시 이중 수정 부담 감소, 추론이 더 정확한 경우 많음.
// ❌
const name: string = "John";
const user: { name: string; age: number } = { name: "John", age: 30 };
// ✅
const name = "John";
const user = { name: "John", age: 30 };
2. 명시적 반환 타입
함수 계약 명확화, 반환 타입 오변경 방지. 공개 API·복잡한 로직에서 필수.
function calculateTotal(items: Item[]): number {
return items.reduce((sum, item) => sum + item.price, 0);
}
async function fetchUser(id: string): Promise<User> {
const res = await fetch(`/api/users/${id}`);
return res.json();
}
3. any 사용 금지
타입 안전성·자동완성 무효화. unknown + 타입 가드 또는 구체 타입 사용.
// ❌
function process(data: any) {
return data.value;
}
// ✅
function process(data: unknown): number {
if (typeof data === "object" && data !== null && "value" in data)
return (data as { value: number }).value;
throw new Error("Invalid data");
}
함수 · 제네릭
- 함수: 인자·반환 타입 명시. 오버로드 시 구현 시그니처는 유니온으로.
- 제네릭:
T,K extends keyof T등 제약 명시.getProperty<T, K extends keyof T>(obj: T, key: K): T[K]패턴 활용.
타입 가드
typeof,instanceof,in으로 분기 후 타입 좁히기- 복잡한 검사는 사용자 정의 가드
(value): value is T사용
템플릿:
assets/types.guards.ts
tsconfig
- 프로젝트 성격에 맞는 tsconfig를 사용
- 타입 안정성을 해치지 않는 선에서만 옵션을 조정
- 앱/서버/라이브러리는 설정 파일을 분리
- 타입 에러 회피 목적의 옵션 완화 금지
템플릿:
assets/tsconfig.nextjs.tsassets/tsconfig.node.tsassets/tsconfig.react.ts
이벤트 타입
- DOM / React 이벤트는 내장 타입 사용
- 커스텀 이벤트만 별도 타입 정의
- 이벤트 재정의 금지
템플릿:
assets/types.events.ts
유틸리티 타입
- TypeScript 내장 유틸리티 타입은 그대로 사용
- 커스텀 유틸리티 타입만 정의
템플릿:
assets/types.utils.ts
실전 패턴
- interface 우선: 객체 계약·확장은
interface, 유니온/인터섹션은type. API 설명은 명사형으로 작성 (/** 비활성화 상태 */). as const: 리터럴·객체 불변 보존.typeof obj[keyof typeof obj]로 이넘처럼 활용.- 브랜드 타입:
type UserId = string & { readonly brand: unique symbol }로 동일 원시 타입 구분. - 타입 단언 최소화:
as대신 타입 가드. - 제네릭 제약:
T extends object등 명시.
타입 에러 해결
| 에러 | 대응 |
|---|---|
Type 'X' is not assignable to type 'Y' |
타입 가드로 분기 후 할당 |
Property 'X' does not exist on type 'Y' |
타입 확장 또는 optional |
Object is possibly 'null' or 'undefined' |
if (x == null) / ?. / ?? |
Argument of type 'X' is not assignable to parameter of type 'Y' |
제네릭 T[] 또는 오버로드 |
Type 'X' cannot be used as an index type |
keyof typeof obj 사용 |
디버깅: 호버로 추론 확인, 가드·제네릭·유틸리티 타입으로 해결 후 as는 최후 수단.
참고
이 문서들은 규칙이 아니라 참고용, 판단 기준은 각 skill 문서를 우선
- TypeScript Handbook - TypeScript 공식 개념·타입 시스템 레퍼런스
- Playground - 타입 동작 실험 및 예제 검증용
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
bun
Node.js 대신 Bun 런타임 사용을 위한 스킬. 다음 상황에서 사용: (1) 새 JavaScript/TypeScript 프로젝트 생성 시, (2) package.json 또는 의존성 관련 작업 시, (3) 스크립트 실행 또는 개발 서버 시작 시, (4) Node.js 프로젝트를 Bun으로 전환 시, (5) 'bun', 'bunx', 'bun.lockb' 키워드가 포함된 작업 시
storybook
Storybook 스토리 작성 및 CSF 3.0 베스트 프랙티스 스킬. 다음 상황에서 사용: (1) 새 스토리 파일(.stories.tsx, .stories.ts) 작성 시, (2) 기존 스토리 수정 시, (3) Args, Decorators, Parameters 설정 시, (4) Storybook 설정 파일(.storybook/) 작업 시, (5) 'story', 'stories', 'storybook', 'CSF' 키워드가 포함된 작업 시
testing
React Testing Library 및 Vitest 기반 테스팅 모범 관례. 다음 상황에서 사용: (1) .test.tsx, .test.ts, .spec.tsx, .spec.ts 파일 작업 시, (2) 컴포넌트 테스트 작성 또는 리팩토링 시, (3) 'test', 'testing', 'vitest', 'RTL', 'getByRole', 'userEvent', 'waitFor', 'expect' 키워드 포함 작업 시, (4) 비동기 로직 또는 사용자 상호작용 테스트 작성 시
github-actions
GitHub Actions 워크플로우 생성, 보안 및 버전 관리 스킬. 다음 상황에서 사용: (1) 새 워크플로우 파일(.yml) 작성 시, (2) 기존 워크플로우 수정 시, (3) 액션 버전 검토 또는 업데이트 시, (4) CI/CD 보안 감사 시, (5) 'actions/', 'uses:', 'workflow', '.github/workflows' 키워드가 포함된 작업 시
github
GitHub CLI(gh)를 활용한 GitHub 플랫폼 상호작용 가이드. 다음 상황에서 사용: (1) GitHub 이슈 생성, 조회, 수정 시, (2) Pull Request 생성, 리뷰, 병합 시, (3) GitHub 릴리스 생성 및 관리 시, (4) 레이블, 마일스톤 등 프로젝트 관리 시, (5) GitHub Actions 워크플로우 실행 및 결과 조회 시, (6) 'gh', 'issue', 'pull request', 'PR', 'release', 'label', 'workflow', 'run' 키워드가 포함된 작업 시
react
React 성능 최적화 및 베스트 프랙티스 스킬. Vercel Engineering 가이드 기반, 프레임워크 비종속. 다음 상황에서 사용: (1) React 컴포넌트(.tsx, .jsx) 작성 또는 수정 시, (2) 상태 관리, hooks, 리렌더링 최적화 작업 시, (3) 비동기 데이터 페칭 또는 Suspense 패턴 작업 시, (4) 번들 사이즈 최적화 또는 코드 스플리팅 시, (5) 'react', 'useState', 'useEffect', 'useMemo', 'useCallback', 'memo', 'Suspense', 'lazy' 키워드가 포함된 작업 시
Didn't find tool you were looking for?