忽略打字稿上的"找不到模块"错误

Raf*_*ael 15 import module typescript

Typescript编译器可以忽略cannot find module 'x'导入表达式上的错误,例如:

//How to tell the compiler that this module does exists
import sql = require('sql');
Run Code Online (Sandbox Code Playgroud)

有多个npm库,例如没有现有类型的节点sql

除了使用declare module x ...?创建新的定义文件之外,有没有办法告诉编译器忽略此错误?

thi*_*ple 13

如果你只是想绕过编译器,你可以为该模块创建一个.d.ts文件,例如,你可以创建一个sql.d.ts文件,里面有这个:

declare module "sql" {
  let _sql: any;
  export = _sql;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果不为每个模块创建单独的虚拟定义文件,是否没有其他方法来解决这些错误? (4认同)

sts*_*oth 10

从TypeScript 2.6(2017年10月31日发布)开始,现在有一种方法可以使用// @ts-ignore目标行之前的注释来忽略特定行中的所有错误

所提及的文档足够简洁,但要回顾一下:

// @ts-ignore
const s : string = false
Run Code Online (Sandbox Code Playgroud)

禁用此行的错误报告。

但是,这仅应在解决错误或使用黑客攻击时作为不得已的方法,这(x as any)比丢失对一行的所有类型检查要麻烦得多。

至于指定某些错误,此处(2018年中)的状态在Design Meeting Notes(2/16/2018)和更多评论中进行了讨论,基本上

“没有定论

强烈反对引入这种微调。