我已经使用 jspm 安装了“interact.js”(以及 npm,以便打字稿满意)。该应用程序运行良好,但我的代码显示错误:
import { interact } from 'interact.js/interact'
// ==> typescript error: TS2307: Cannot find module 'interact.js/interact'
我想这个问题与包含“.js”的 npm 模块有关,但我不确定。无论如何,有没有办法解决这个问题
A.帮助Typescript找到模块
B. 禁用此特定错误(因为它工作正常)
PS:这是我的 tsconfig.json 文件:
{ "exclude":
[ "node_modules"
, "jspm_packages"
, ".git"
, "typings/browser"
, "typings/browser.d.ts"
]
, "compilerOptions":
{ "outDir": "dist"
, "target": "es5"
, "sourceMap": true
, "experimentalDecorators": true
}
, "compileOnSave": false
}
TypeScript 编译器/语言服务实际上并不通过文件系统或您的文件系统解析模块名称。package.json
就像你可能期望的那样 -相反,它使用定义 (.d.ts) 定义类型信息的文件.
虽然这不是世界上最直观的事情,但他们的推理并非完全不合理 - 没有定义文件,不可能知道导入的东西是什么类型,而且他们对于让编译器默认为只是有点谨慎将导入设置为any
type.
简而言之,这个问题的解决方案就是安装定义文件(如果可用),或者编写/存根您自己的定义文件(如果没有)。他们将在 TypeScript 2.0 中通过它的声音让这一切变得更容易,但即使如此,也需要非常多的代码来创建虚拟定义:
declare module "interact.js/interact" {
export var interact: any;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)