如何在打字稿中正确导入自定义类型

jav*_*897 6 types typescript reactjs

我在src/@types/app.d.ts( export type AuthKeyT = string) 中有自定义类型

我想在tsx反应文件中使用它(使用import { AuthKeyT } from '@types/app'),但出现错误:

无法导入类型声明文件。考虑导入“app”而不是“@types/app”

所以,当我使用时,import { AuthKeyT } from 'app'我得到:

找不到模块“应用程序”。

所以..有什么问题吗?我应该如何导入自定义类型?

3.7.2在反应应用程序中使用打字稿。

Nis*_*ngh 60

您遇到此错误是因为@types/...这是全局导入。例如import { AuthKeyT } from '@types/app',意味着您正在尝试从node_modules 中的@types 导入。

您可以通过更改@types为类似的内容@customTypes或更改类型文件夹的路径(例如@src/types...在导入时)来解决此问题。

  • 啊,你救了我一些头发,朋友 (2认同)

joh*_*pin 10

正如错误所示,您无法.d.ts在 TypeScript 中导入文件。

import ... from 'app'隐式表示import ... from 'app.ts'或者该文件不存在,因此您会收到第二个错误。

如果您想通过此导入来使用您的类型,则必须将它们写入一个简单的.ts文件中,如下所示:

src/@types/app.ts:

export type AuthKeyT = string
Run Code Online (Sandbox Code Playgroud)

通过此结构,您将能够使用以下方式导入此类型:

import { AuthKeyT } from 'app'
Run Code Online (Sandbox Code Playgroud)