首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReScript,TypeScript:无法找到模块‘@rescript/ type /src/reactDOM.gen’或其相应的类型声明

ReScript,TypeScript:无法找到模块‘@rescript/ type /src/reactDOM.gen’或其相应的类型声明
EN

Stack Overflow用户
提问于 2021-12-20 22:49:45
回答 1查看 284关注 0票数 4

我正在逐步重写一个应用程序,并将ReScript转换为ReScript。我已经在ReScript中实现了几个组件,但这是第一个组件,我使用ReactDOM.Style.t作为组件的属性。

下面是我最小化的组件代码:

代码语言:javascript
复制
@genType
@react.component
let make = (~sx: option<ReactDOM.Style.t>=?) => {
  <div></div>
}

ReScript编译得很好(除了警告没有使用sx,但我们可以忽略它)。

我生成了以下bs.js,这似乎很好:

代码语言:javascript
复制
// Generated by ReScript, PLEASE EDIT WITH CARE

import * as React from "react";

function InhypedIcon(Props) {
  return React.createElement("div", undefined);
}

var make = InhypedIcon;

export {
  make ,

}
/* react Not a pure module */

以及以下相应的.gen.tsx文件,这会导致问题:

代码语言:javascript
复制
/* TypeScript file generated from InhypedIcon.res by genType. */
/* eslint-disable import/first */


import * as React from 'react';

// @ts-ignore: Implicit any on import
import * as InhypedIconBS__Es6Import from './InhypedIcon.bs';
const InhypedIconBS: any = InhypedIconBS__Es6Import;

import type {Style_t as ReactDOM_Style_t} from '@rescript/react/src/ReactDOM.gen';

// tslint:disable-next-line:interface-over-type-literal
export type Props = { readonly sx?: ReactDOM_Style_t };

export const make: React.ComponentType<{ readonly sx?: ReactDOM_Style_t }> = InhypedIconBS.make;

这不是编译,我得到的是TypeScript错误:

代码语言:javascript
复制
TypeScript error in /app/src/icons/InhypedIcon.gen.tsx(11,48):
Cannot find module '@rescript/react/src/ReactDOM.gen' or its corresponding type declarations.  TS2307

     9 | const InhypedIconBS: any = InhypedIconBS__Es6Import;
    10 |
  > 11 | import type {Style_t as ReactDOM_Style_t} from '@rescript/react/src/ReactDOM.gen';
       |                                                ^
    12 |
    13 | // tslint:disable-next-line:interface-over-type-literal
    14 | export type Props = { readonly sx?: ReactDOM_Style_t };

我很明白,TS找不到rescript/react/src/ReactDOM.gen,但是我真的不知道为什么。有什么办法解决这个问题吗?

我的包版本:

代码语言:javascript
复制
node: v16.6.2

"typescript": "^4.1.2"
"rescript": "^9.1.4"
"@rescript/react": "^0.10.3"

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-21 08:52:43

这是因为rescript绑定不能与GenType一起使用,所以如果您需要它,您必须自己键入它(cf 要导入类型的文档。):

代码语言:javascript
复制
@genType.import(("react", "CSSProperties"))
type reactStyle = ReactDOM.Style.t

@genType
@react.component
let make = (~sx: option<reactStyle>=?) => {
  <div></div>
}

这应该能行。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70428873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档