mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-05 20:59:31 +08:00
70 lines
2 KiB
Text
70 lines
2 KiB
Text
---
|
|
description: 'Enforce consistent usage of type imports.'
|
|
---
|
|
|
|
> 🛑 This file is source code, not the primary documentation location! 🛑
|
|
>
|
|
> See **https://typescript-eslint.io/rules/consistent-type-imports** for documentation.
|
|
|
|
TypeScript 3.8 added support for type-only imports.
|
|
Type-only imports allow you to specify that an import can only be used in a type location, allowing certain optimizations within compilers.
|
|
|
|
## Rule Details
|
|
|
|
This rule aims to standardize the use of type imports style across the codebase.
|
|
|
|
## Options
|
|
|
|
```ts
|
|
type Options = {
|
|
prefer: 'type-imports' | 'no-type-imports';
|
|
disallowTypeAnnotations: boolean;
|
|
};
|
|
|
|
const defaultOptions: Options = {
|
|
prefer: 'type-imports',
|
|
disallowTypeAnnotations: true,
|
|
};
|
|
```
|
|
|
|
### `prefer`
|
|
|
|
This option defines the expected import kind for type-only imports. Valid values for `prefer` are:
|
|
|
|
- `type-imports` will enforce that you always use `import type Foo from '...'` except referenced by metadata of decorators. It is default.
|
|
- `no-type-imports` will enforce that you always use `import Foo from '...'`.
|
|
|
|
Examples of **correct** code with `{prefer: 'type-imports'}`, and **incorrect** code with `{prefer: 'no-type-imports'}`.
|
|
|
|
```ts
|
|
import type { Foo } from 'Foo';
|
|
import type Bar from 'Bar';
|
|
type T = Foo;
|
|
const x: Bar = 1;
|
|
```
|
|
|
|
Examples of **incorrect** code with `{prefer: 'type-imports'}`, and **correct** code with `{prefer: 'no-type-imports'}`.
|
|
|
|
```ts
|
|
import { Foo } from 'Foo';
|
|
import Bar from 'Bar';
|
|
type T = Foo;
|
|
const x: Bar = 1;
|
|
```
|
|
|
|
### `disallowTypeAnnotations`
|
|
|
|
If `true`, type imports in type annotations (`import()`) is not allowed.
|
|
Default is `true`.
|
|
|
|
Examples of **incorrect** code with `{disallowTypeAnnotations: true}`.
|
|
|
|
```ts
|
|
type T = import('Foo').Foo;
|
|
const x: import('Bar') = 1;
|
|
```
|
|
|
|
## When Not To Use It
|
|
|
|
- If you are not using TypeScript 3.8 (or greater), then you will not be able to use this rule, as type-only imports are not allowed.
|
|
- If you specifically want to use both import kinds for stylistic reasons, you can disable this rule.
|