当前位置: 首页 > 知识库问答 >
问题:

react.js - 如何正确声明一个 react + ts 组件包?

华心思
2023-08-04

组件

const MyComponent = () => {  return <div>hi</div>;};export default MyComponent;

package.json

{  "name": "my-library",  "type": "module",  "module": "./dist/main.es.js",  "types": "./types/index.d.ts",  "typings": "./types/index.d.ts",  "exports": {  ".": {    "import": "./dist/main.es.js"  }},

index.d.ts

declare module "my-library";

使用

import DDD from "my-library";export default function Demo() {  return (    <>      <DDD />    </>  );}

目前在使用的时候报错

Could not find a declaration file for module 'my-library'. '/my-library/dist/main.es.js' implicitly has an 'any' type.  There are types at '/demo/node_modules/my-library/types/index.d.ts', but this result could not be resolved when respecting package.json "exports". The 'my-library' library may need to update its package.json or typings.1 import DDD from "my-library";

如何在 index.d.ts 文件中正确声明这个组件

共有1个答案

姚星腾
2023-08-04
declare module "my-library" {  import { FunctionComponent } from 'react';  const MyComponent: FunctionComponent;  export default MyComponent;}

FunctionComponent 是 React 提供的类型,它表示一个函数组件。在这个声明文件中,我们声明 "my-library" 模块有一个默认导出,它是一个函数组件。

然后在你的 package.json 文件中,确保 "types" 和 "typings" 字段指向这个声明文件:

{  "name": "my-library",  "type": "module",  "module": "./dist/main.es.js",  "types": "./index.d.ts",  "typings": "./index.d.ts",  "exports": {    ".": {      "import": "./dist/main.es.js"    }  }}

这样,当其他 TypeScript 项目使用 "my-library" 模块时,TypeScript 就会找到这个声明文件,知道这个模块提供了一个默认导出,它是一个函数组件,然后就能进行类型检查了。

 类似资料:
  • 我正在尝试声明和初始化一个保存类数组 这是我用来解决项目内存管理问题的示例。我可以声明指针,但无法初始化它。 收到的错误: 对非常量表达式函数“void*operator new”的调用std::unique_ptr ship_crew_members=std::make_unique

  • 我想封装一个通用的 get 函数: 其中 param 是必选的 url 参数,query 是可选的查询参数,data 指定 api 的返回类型,我希望能够这样使用 get 函数: 这是我现在写的: 现在可以在 param 为 never 时省略第二个参数,但是 param 不是 never 时省略第二个参数没有错误提示。我应该如何改进我的代码?

  • 我对反应很陌生。js和我一直在研究一个组件类(子类),该类具有函数和单个状态对象,我的最终目标是在父类中使用该类,以便它可以调用其函数并更新状态。 我遇到的问题是: 我不知道组件的生命周期,并且 我有着深厚的文化背景 意思:我一直像对待任何C#类而不是JavaScript一样对待这些组件类。我现在知道了。 但我需要帮助评估我的方法并解决我一直看到的这个问题: 这是我的子类组件 从“React”导入

  • 如何正确断言呢?

  • 问题内容: 我努力了: 首先,声明和初始化可以正常工作,但是第二,第三和第四不起作用。如何声明和初始化浮点数的const数组? 问题答案: 数组不是天生不变的。您无法使其保持恒定。 您可以获得的最接近的是: 请注意而不是:它可确保获得(固定大小)数组而不是切片。因此值不是固定的,但大小是固定的。

  • 问题内容: 我是React.js的新手,因此非常感谢您的帮助。 我有这个:http : //jsfiddle.net/rzjyhf91/ 其中我做了两部分:图像和按钮。 目的是通过单击按钮来删除图像,我为此使用了它,但是它不起作用: 如何从另一个组件中删除反应组件? 问题答案: 好吧,看来您应该重新考虑显示控件的处理方式。React只是关于孤立的组件,因此,您不应该卸载由父组件安装的组件。相反,您