Javascript 在我的angular项目中使用@types/cleve.js时,如何忽略TS1192?

Javascript 在我的angular项目中使用@types/cleve.js时,如何忽略TS1192?,javascript,angular,typescript,definitelytyped,cleave,Javascript,Angular,Typescript,Definitelytyped,Cleave,我在Angular 6应用程序中使用了cleave.js(^1.5.2)和@types/cleave.js包(^1.4.0),发生了一件奇怪的事情。如果我运行ng build来构建应用程序,它将失败,并出现以下错误: ERROR in src/app/app.component.ts(4,8): error TS1192: Module '"C:/Users/evcomes/Angular2/hellogular/node_modules/@types/cleave.js/index"' has

我在Angular 6应用程序中使用了cleave.js(^1.5.2)和@types/cleave.js包(^1.4.0),发生了一件奇怪的事情。如果我运行
ng build
来构建应用程序,它将失败,并出现以下错误:

ERROR in src/app/app.component.ts(4,8): error TS1192: Module '"C:/Users/evcomes/Angular2/hellogular/node_modules/@types/cleave.js/index"' has no default export.
src/app/app.component.ts(5,8): error TS1192: Module '"C:/Users/evcomes/Angular2/hellogular/node_modules/@types/cleave.js/options/index"' has no default export.
我在@types/cleve.js的源代码中看到了这一点,但它只是一个类型库,为什么我需要默认导出?真正奇怪的是,如果我修改了一个文件(没有什么意义),然后保存,自动重建会自动恢复(仍然显示错误,但会继续),这将很好地服务于开发中的angular应用程序,而我使用的cleave.js功能甚至可以在我的浏览器中运行。那么这不是一个真正的错误吗?我怎样才能关掉它

我所看到的任何关于使用DefinitelyTyped库的教程或指南都说,npm安装它们应该足以在不做任何其他修改的情况下使用它们,因此我在搜索时发现的大多数问题都是人们试图为JS库或他们自己的模块创建自己的TypeScript绑定

在package.json中:

...
"@types/cleave.js": "^1.4.0",
"cleave.js": "^1.5.2"
...
在my tsconfig.json中:

...
"esModuleInterop": true,
"typeRoots": [
   "node_modules/@types"
]
...
在我的app.component.ts中:

...
import Cleave from 'cleave.js';
import CleaveOptions from 'cleave.js/options'
...

大多数获取TS类型的js库使用
..*as…
。 或者要求
tsconfig
中的
allowSyntheticDefaultImports:true
,默认导出才能正常工作

import*作为“clove.js/options”中的解理选项
//及
从“Cleave.js”导入Cleave

您正在将两者作为默认值导入。请尝试将
import*作为“clove.js”中的clove
import{clove}…
。打字文件显示为导出的是什么?啊,好吧,
import*作为CLIVEOPTIONS…
这件事起了作用,但当我为CLIVE做这件事时,它给了我另一个错误:
src/app/app.component.ts(4,25)中的错误:错误TS2497:Module's“C:/Users/evcomes/Angular2/hellogular/node\u modules/@types/clove.js/index”'解析为非模块实体,无法使用此构造导入。
可在此处查看此文件的源代码:
export=Cleave
意味着您需要在您的
tsconfig
中设置
allowSyntheticDefaultImports:true
,这与使用'Cleave.js'中的
import Cleave一起完成了这个技巧。你想从中得出一个答案,这样我就可以给你机会了吗?
//tsconfig.json
...
{
  allowSyntheticDefaultImports: true
}
...