运行相关yarn add
命令后,以下是新行packages.json
:
"@types/classnames": "^2.2.7",
"classnames": "^2.2.6",
然后,将这些行添加到我的打字稿文件中:
import * as classnames from 'classnames';
...
<div className={classnames('normal', 'on')}>
现在我得到这个错误
类型错误:无法调用类型缺少调用签名的表达式。输入'{默认值:ClassNamesExport; }'没有兼容的呼叫签名。TS2349
我的内容 tsconfig.json
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
"experimentalDecorators": true
},
"include": [
"src"
]
}
如何解决此错误?
完成后import * as X from 'x'
,您将获得一个模块名称空间对象。它是一个不可变的对象,不能调用。
由于classnames
是commonjs模块,因此您需要esModuleInterop: true
在tsconfig.json
和中进行设置import classnames from 'classnames'
,
或者,您也可以使用旧语法导入它import classnames = require('classnames')
。
建议使用esModuleInterop
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句