我正在使用babel-plugin-react-css-modules。它将styleName属性添加到HTML元素。Typescript无法识别此属性。我非常确定我需要扩展一些东西,但我尝试过的东西都不起作用。
我曾尝试在'.d.ts‘文件中声明一个Element来进行声明合并,但我肯定做错了什么。
interface Element {
styleName: string;
}
export const Wrapper: React.FC<IWrapperProps> = ({ children, style }) => (
<div styleName="wrapper" style={style}>
{children}
</div>
);更新:
发布于 2018-12-12 19:47:11
将@types/react-css-modules添加到您的package.json,styleName将被识别:
npm install @types/react-css-modules --save-dev发布于 2018-11-20 12:43:23
因为您在一个模块中(它有一个导出),所以您使用的是全局作用域之外的一个单独的作用域-所以您只是创建了一个名为Element的接口,该接口独立于全局声明。
我会把这个接口放在一个不带导出/导入(augmentations.d.ts)的单独文件中,并将它添加到您的tsconfig.json中。
发布于 2021-07-06 06:29:18
最佳选项:
babel-plugin-react-css-modules插件的babel-loader,后跟'ts-loader‘(注意,加载器是以相反的顺序运行的)webpack对此的配置如下所示:
{
test: /\.tsx?/,
exclude: '/node_modules/',
use: [
{ loader: 'ts-loader' },
{
loader: 'babel-loader',
options: {
babelrc: false,
"plugins": [
["@babel/plugin-syntax-typescript",
{
isTSX: true
}],
"@babel/plugin-syntax-jsx",
[
"babel-plugin-react-css-modules",
{
"handleMissingStyleName": "throw"
}
]
]
}
},
]
}排除babelrc作为babel,如果用来编译.js文件,它们不能干扰typescript编译。
然后运行
另一个不太好的选择。
https://stackoverflow.com/questions/53386183
复制相似问题