Javascript 在我的angular项目中使用@types/cleve.js时,如何忽略TS1192?
我在Angular 6应用程序中使用了cleave.js(^1.5.2)和@types/cleave.js包(^1.4.0),发生了一件奇怪的事情。如果我运行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
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
}
...