ban-types
Bans the use of primitive wrapper objects (e.g. String the object is a wrapper
Bans the use of primitive wrapper objects (e.g. String the object is a wrapper
of string the primitive) in addition to the non-explicit Function type and
the misunderstood Object type.
There are very few situations where primitive wrapper objects are desired and far more often a mistake was made with the case of the primitive type. You also cannot assign a primitive wrapper object to a primitive leading to type issues down the line. For reference, the TypeScript handbook also says we shouldn't ever use these wrapper objects.
With Function, it is better to explicitly define the entire function signature
rather than use the non-specific Function type which won't give you type
safety with the function.
Finally, Object and {} means "any non-nullish value" rather than "any object
type". object is a good choice for a meaning of "any object type".
Invalid:
let a: Boolean;
let b: String;
let c: Number;
let d: Symbol;
let e: Function;
let f: Object;
let g: {};
Valid:
let a: boolean;
let b: string;
let c: number;
let d: symbol;
let e: () => number;
let f: object;
let g: Record<string, never>;