Avoid Assertions and Predicates: Use other methods instead of assertion and predicate as they disable TypeScript's type-checking features, leading to potential errors.
Interface Usage: Use interface only when necessary for enforcement or inheritance. Otherwise, use object.
Generics: Use generics only when there's a type relationship between data. Using them without context is meaningless.
Callback Return Type: Callbacks should return void when indicating no return value.
Callback Parameters: Only include necessary parameters in callbacks. Avoid optional parameters.