将分组的React组件转换为打字稿

时间:2020-07-09 13:59:31

标签: reactjs typescript

我正在将我的react项目转换为使用打字稿。这是原始js项目的文件结构(简化版本)的一个示例:

  • src
    • 组件
      • index.js
      • 输入
        • button.js
        • textbox.js
        • checkbox.js
        • index.js
      • 小工具
        • index.js
        • widget1.js
        • widget2.js

我的src / components / inputs / index.js看起来像这样:

export { InputButton as Button } from './button'
export { InputTextbox as Textbox } from './textbox'
export { InputCheckbox as Checkbox } from './checkbox'

(src / components / widgets / index.js)遵循相同的格式

我的src / components / index.js看起来像

export { Button, Textbox, Checkbox} from './inputs'
export { Widget1, Widget2} from './widgets'

我设置了src / components /的别名路径,以便现在可以像这样导入组件:

import {Button} from "@components"

在我开始使用打字稿之前,一切正常。

我现在正在尝试将此项目转换为打字稿。我已经将组件转换为.tsx并为其添加了接口。但是,当我尝试使用import {Button} from "@components"导入Button时,我的ide(vscode)中带下划线的是导入语句的“ @componets”部分,并且出现以下错误:

Could not find a declaration file for module '@components'. '/myProject/src/components/index.js' implicitly has an 'any' type.

我认为问题可能是我缺少“ index.d.ts”文件,但是我不确定其内容是什么。

不使用create-react-app。

谢谢。

1 个答案:

答案 0 :(得分:0)

您还需要为TypeScript设置类似的路径别名,我认为this article explains的使用方法很好,比我在几行中要好得多:)

或者,您可以在TypeScript docs中阅读有关<h1>This is a title</h1> <h1 class="offset">Offset title</h1> <h1 class="biggap">Gappy title</h1> <h1> <span>Multi-line<br />title</span> </h1>的更多信息