| name | typescript-strict |
| description | Strict TypeScript rules. Use when writing ANY TypeScript. |
Strict TypeScript Standards
Rules
1. NO any
function process(data: any) {}
function process(data: unknown) {
if (isValidData(data)) { }
}
2. Explicit Returns
function getUser(id: string) { return db.find(id); }
function getUser(id: string): Promise<User | null> { return db.find(id); }
3. Typed Errors
catch (e) { console.log(e.message); }
catch (error: unknown) {
if (error instanceof AppError) { logger.error(error.message); }
else if (error instanceof Error) { logger.error(error.message); }
else { logger.error('Unknown error', { error }); }
}
4. No Unexplained Assertions
const user = users.find(u => u.id === id)!;
const user = users.find(u => u.id === id);
if (!user) throw new NotFoundError(`User ${id} not found`);
5. Prefer Type Inference Where Obvious
const count: number = 5;
const count = 5;
function add(a: number, b: number): number {
return a + b;
}
6. Use 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.name);
} else {
console.log(result.error);
}
}
Quick Reference
| Pattern | Status |
|---|
any | NEVER |
| Implicit return | NEVER |
! without comment | NEVER |
// @ts-ignore | NEVER |
as casting | MINIMIZE |
unknown + guards | PREFERRED |