Use when you have a written implementation plan to execute in a separate session with review checkpoints
npx skills add vuralserhat86/antigravity-agentic-skills --skill "typescript_advanced"
Install specific skill from multi-skill repository
# Description
TypeScript 5+ advanced patterns, type utilities ve best practices rehberi.
# SKILL.md
name: typescript_advanced
router_kit: FullStackKit
description: TypeScript 5+ advanced patterns, type utilities ve best practices rehberi.
metadata:
skillport:
category: development
tags: [architecture, automation, best practices, clean code, coding, collaboration, compliance, debugging, design patterns, development, documentation, efficiency, git, optimization, productivity, programming, project management, quality assurance, refactoring, software engineering, standards, testing, typescript advanced, utilities, version control, workflow] - patterns
📘 TypeScript Advanced
TypeScript 5+ advanced patterns rehberi.
📋 Utility Types
// Partial - tüm prop'lar optional
type PartialUser = Partial<User>;
// Required - tüm prop'lar required
type RequiredUser = Required<User>;
// Pick - seçili prop'lar
type UserName = Pick<User, 'id' | 'name'>;
// Omit - prop'ları çıkar
type UserWithoutPassword = Omit<User, 'password'>;
// Record - key-value map
type UserMap = Record<string, User>;
// ReturnType - fonksiyon return tipi
type Result = ReturnType<typeof fetchUser>;
🔧 Advanced Patterns
Discriminated Unions
type Result<T> =
| { success: true; data: T }
| { success: false; error: string };
function handle(result: Result<User>) {
if (result.success) {
console.log(result.data); // User
} else {
console.log(result.error); // string
}
}
Template Literal Types
type EventName = `on${Capitalize<string>}`;
// "onClick", "onHover", etc.
type Route = `/${string}`;
Conditional Types
type NonNullable<T> = T extends null | undefined ? never : T;
type Flatten<T> = T extends Array<infer U> ? U : T;
🎯 Zod Integration
import { z } from 'zod';
const UserSchema = z.object({
id: z.string().uuid(),
email: z.string().email(),
age: z.number().min(0).max(120),
});
type User = z.infer<typeof UserSchema>;
⚡ Best Practices
- Strict mode always on
- Avoid
any- useunknowninstead - Prefer interfaces for objects
- Use const assertions for literals
- Type narrowing over type assertions
🔄 Workflow
Kaynak: TypeScript 5.0 Release Notes & Total TypeScript Best Practices
Aşama 1: Type Design & Schema
- [ ] Interface vs Type: Nesne yapıları için
interface, union ve karmaşık tipler içintypealias'larını belirle. - [ ] Zod Validation: Runtime güvenliği için şemaları tanımla ve
z.inferile TS tiplerini türet. - [ ] Strict Check:
tsconfig.jsondosyasındastrict: trueayarının aktif olduğunu doğrula.
Aşama 2: Advanced Logic Implementation
- [ ] Type Narrowing:
unknowntiplerinitype guards(is, in) veyaassertskullanarak daralt. - [ ] Conditional & Mapped Types: Tekrar eden tipleri dinamik hale getirmek için
T extends U ? X : Yyapılarını kullan. - [ ] Generic Constraints: Generic tipleri
extendsile kısıtlayarak tip güvenliğini artır.
Aşama 3: Refactoring & Verification
- [ ] Remove
any: Tümanykullanımlarınıunknownveya spesifik union tipleriyle değiştir. - [ ] Performance Audit: Karmaşık recursive tiplerin derleme (build) süresini etkilemediğini doğrula.
- [ ] Documentation:
@param,@returnsve@typeParaetiketleriyle gelişmiş tipleri dökümante et.
Kontrol Noktaları
| Aşama | Doğrulama |
|---|---|
| 1 | eslint-plugin-typescript hataları temizlendi mi? |
| 2 | "Discriminated Unions" ile tüm case'ler handle edildi mi? |
| 3 | Tip tanımları ile gerçek runtime verileri tutarlı mı? |
TypeScript Advanced v1.5 - With Workflow
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.