Игнорировать ошибку "не удается найти модуль" на typescript

Может ли компилятор Typescript игнорировать ошибку cannot find module 'x' при импорте, например:

//How to tell the compiler that this module does exists
import sql = require('sql');

Существует несколько библиотек npm, таких как node sql, у которых нет существующих типов

Есть ли способ сказать компилятору игнорировать эту ошибку, кроме создания нового файла определения с помощью declare module x ...?

Ответ 1

Если вы просто хотите обойти компилятор, вы можете создать файл .d.ts для этого модуля, например, вы можете создать файл sql.d.ts, и внутри это:

declare module "sql" {
  let _sql: any;
  export = _sql;
}

Ответ 2

Начиная с TypeScript 2.6 (выпущен 31 октября 2017 г.), теперь есть способ игнорировать все ошибки в конкретной строке, используя //@ts-ignore комментарии перед целевой строкой.

Исправленная документация достаточно лаконична, но резюмируем:

// @ts-ignore
const s : string = false

отключает отчеты об ошибках для этой строки.

Тем не менее, это следует использовать только в качестве крайней меры, когда исправление ошибки или использование таких хаков, как (x as any), намного сложнее, чем потеря проверки всех типов для строки.

Что касается указания определенных ошибок, текущее состояние (середина 2018 года) обсуждается здесь, в заметках к совещанию по проектированию (16.02.2017) и в дополнительных комментариях, которые в основном

"пока нет заключения"

и сильная оппозиция введению этой тонкой настройки.

Ответ 3

Решено Это По умолчанию @ts-check ищет определения модуля, либо его собственный код, либо внешние библиотеки.

Так как мы не используем модули стиля ES6, то мы должны использовать commonjs, обратитесь к моему файлу jsconfig.json за помощью.

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "lib": ["es5", "es6", "es7"]
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"],
  "typeAcquisition": { "enable": true }
}