JS.TS.TRIPLE.SLASH.REFERENCE

Sets preference level for triple slash directives versus ES6-style import declarations

Use of triple-slash reference type directives is discouraged in favor of the newer import style. This rule allows you to ban use of /// <reference path="" />, /// <reference types="" />, or /// <reference lib="" /> directives.

Rule Details

With { "path": "never", "types": "never", "lib": "never" } options set, the following will all be incorrect usage:

Copy
/// <reference path="foo" />
/// <reference types="bar" />
/// <reference lib="baz" />

Examples of incorrect code for the { "types": "prefer-import" } option. Note that these are only errors when both styles are used for the same module:

Copy
/// <reference types="foo" />
import * as foo from 'foo';
Copy
/// <reference types="foo" />
import foo = require('foo');

With { "path": "always", "types": "always", "lib": "always" } options set, the following will all be correct usage:

Copy
/// <reference path="foo" />
/// <reference types="bar" />
/// <reference lib="baz" />

Examples of correct code for the { "types": "prefer-import" } option:

Copy
import * as foo from 'foo';
Copy
import foo = require('foo');

Options

Copy
type Options = {
  lib?: 'always' | 'never';
  path?: 'always' | 'never';
  types?: 'always' | 'never' | 'prefer-import';
};

const defaultOptions: Options = {
  lib: 'always',
  path: 'never',
  types: 'prefer-import',
};

When To Use It

If you want to ban use of one or all of the triple slash reference directives, or any time you might use triple-slash type reference directives and ES6 import declarations in the same file.

When Not To Use It

If you want to use all flavors of triple slash reference directives.

The content on this page is adapted from the ESLint User Guide. Copyright © OpenJS Foundation and other contributors, www.openjsf.org. All rights reserved. https://eslint.org/docs/rules/