Loading...
Loading...
TypeScript 타입 정의 및 베스트 프랙티스 스킬. 다음 상황에서 사용: (1) TypeScript 파일(.ts, .tsx) 작성 또는 수정 시, (2) 타입 정의(interface, type) 작업 시, (3) tsconfig.json 설정 또는 컴파일러 옵션 조정 시, (4) 타입 에러 해결 또는 타입 안전성 개선 시, (5) 제네릭, 유틸리티 타입, 타입 조작 작업 시, (6) 'typescript', 'ts', 'type', 'interface', 'generic' 키워드가 포함된 작업 시
npx skill4agent add dalestudy/skills typescript// ❌
const name: string = "John";
const user: { name: string; age: number } = { name: "John", age: 30 };
// ✅
const name = "John";
const user = { name: "John", age: 30 };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();
}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");
}TK extends keyof TgetProperty<T, K extends keyof T>(obj: T, key: K): T[K]typeofinstanceofin(value): value is T템플릿:assets/types.guards.ts
템플릿:
assets/tsconfig.nextjs.tsassets/tsconfig.node.tsassets/tsconfig.react.ts
템플릿:assets/types.events.ts
템플릿:assets/types.utils.ts
interfacetype/** 비활성화 상태 */as consttypeof obj[keyof typeof obj]type UserId = string & { readonly brand: unique symbol }asT extends object| 에러 | 대응 |
|---|---|
| 타입 가드로 분기 후 할당 |
| 타입 확장 또는 |
| |
| 제네릭 |
| |
as이 문서들은 규칙이 아니라 참고용, 판단 기준은 각 skill 문서를 우선