language-patternslisted
Install: claude install-skill sequenzia/agent-alchemy
# Language Patterns
This skill provides language-specific patterns and best practices. Apply patterns that match the project's language and framework.
---
## TypeScript Patterns
### Type Safety
**Use strict types over `any`:**
```typescript
// Bad
function process(data: any): any {
return data.value;
}
// Good
interface DataItem {
value: string;
count: number;
}
function process(data: DataItem): string {
return data.value;
}
```
**Use discriminated unions for variants:**
```typescript
type Result<T> =
| { success: true; data: T }
| { success: false; error: Error };
function handleResult<T>(result: Result<T>) {
if (result.success) {
// TypeScript knows result.data exists
console.log(result.data);
} else {
// TypeScript knows result.error exists
console.error(result.error);
}
}
```
**Use `unknown` over `any` for external data:**
```typescript
async function fetchData(): Promise<unknown> {
const response = await fetch('/api/data');
return response.json();
}
// Then validate/parse
const data = await fetchData();
if (isValidData(data)) {
// Now safely typed
}
```
### Null Handling
**Use optional chaining and nullish coalescing:**
```typescript
// Optional chaining
const userName = user?.profile?.name;
// Nullish coalescing (only for null/undefined)
const displayName = userName ?? 'Anonymous';
// Combine them
const city = user?.address?.city ?? 'Unknown';
```
**Use type guards:**
```typescript
function isUser(obj: unknown): ob