typescript/consistent-type-imports Style
What it does
Enforce consistent usage of type imports.
Why is this bad?
inconsistent usage of type imports can make the code harder to read and understand.
Examples
Examples of incorrect code for this rule:
ts
import { Foo } from "Foo";
type T = Foo;
type S = import("Foo");
Examples of correct code for this rule:
ts
import type { Foo } from "Foo";
Options
json
{
"typescript/consistent-type-imports": [
"error",
{
"prefer": "type-imports",
"fixStyle": "separate-type-imports",
"disallowTypeAnnotations": true
}
]
}
prefer
: Control whether to enforce type imports or value imports"type-imports"
(default): Will enforce that you always useimport type Foo from '...'
except referenced by metadata of decorators"no-type-imports"
: Will enforce that you always useimport Foo from '...'
fixStyle
: Determines how type imports are added when auto-fixing"separate-type-imports"
(default): Will add the type keyword after the import keywordimport type { A } from '...'
"inline-type-imports"
: Will inline the type keywordimport { type A } from '...'
(only available in TypeScript 4.5+)
disallowTypeAnnotations
: Disallow usingimport()
in type annotationstrue
(default): Disallows usingimport()
in type annotations liketype T = import('foo')
false
: Allowsimport()
type annotations
Examples with "prefer": "type-imports"
(default)
Examples of incorrect code:
ts
import { Foo } from "foo";
let foo: Foo;
Examples of correct code:
ts
import type { Foo } from "foo";
let foo: Foo;
Examples with "prefer": "no-type-imports"
Examples of incorrect code:
ts
import type { Foo } from "foo";
let foo: Foo;
Examples of correct code:
ts
import { Foo } from "foo";
let foo: Foo;
Examples with "fixStyle": "inline-type-imports"
When fixing type imports, this option will use inline type
modifiers:
ts
// Before fixing
import { A, B } from "foo";
type T = A;
const b = B;
// After fixing
import { type A, B } from "foo";
type T = A;
const b = B;
Examples with "disallowTypeAnnotations": false
When set to false
, allows import()
type annotations:
ts
type T = import("foo").Bar;
How to use
To enable this rule in the CLI or using the config file, you can use:
bash
oxlint --deny typescript/consistent-type-imports
json
{
"rules": {
"typescript/consistent-type-imports": "error"
}
}