Restrict types so that only members of the same kind are allowed in them (functional/no-mixed-types
)
💼🚫 This rule is enabled in the following configs: ☑️ lite
, noOtherParadigms
, ✅ recommended
, 🔒 strict
. This rule is disabled in the disableTypeChecked
config.
💭 This rule requires type information.
This rule enforces that an aliased type literal or an interface only has one type of members, eg. only data properties or only functions.
Mixing functions and data properties in the same type is a sign of object-orientation style.
/* eslint functional/no-mixed-types: "error" */
type Foo = {
prop1: string;
prop2: () => string;
};
/* eslint functional/no-mixed-types: "error" */
type Foo = {
prop1: string;
prop2: number;
};
/* eslint functional/no-mixed-types: "error" */
type Foo = {
prop1: () => string;
prop2(): number;
};
This rule will only check alias type literal declarations and interface declarations. Advanced types will not be checked. For example union and intersection types will not be checked.
This rule accepts an options object of the following type:
type Options = {
checkInterfaces: boolean;
checkTypeLiterals: boolean;
};
const defaults = {
checkInterfaces: true,
checkTypeLiterals: true,
};
If true, interface declarations will be checked.
If true, aliased type literal declarations will be checked.