如何正确导入typescript中的自定义类型

w6lpcovy  于 2023-05-01  发布在  TypeScript
关注(0)|答案(3)|浏览(444)

我在src/@types/app.d.ts中有自定义类型(export type AuthKeyT = string
我想在tsx react文件中使用它(使用import { AuthKeyT } from '@types/app'),但我得到一个错误:
无法导入类型声明文件。考虑导入'app'而不是'@types/app'
所以,当我使用import { AuthKeyT } from 'app'时,我得到:
找不到模块“app”。
那么...怎么了?如何导入自定义类型?
我在react应用程序中使用了typescript 3.7.2

nxowjjhe

nxowjjhe1#

您会遇到此错误,因为@types/...是全局导入。例如,import { AuthKeyT } from '@types/app'意味着您正在尝试从node_modules中的@types导入。
您可以通过将@types更改为类似@customTypes的内容或在导入时更改类型文件夹的路径类似@src/types...来解决此问题。

u0njafvf

u0njafvf2#

正如错误所说,您无法在TypeScript中导入.d.ts文件。
import ... from 'app'隐含地表示import ... from 'app.ts',或者这个文件不存在,所以你会得到第二个错误。
如果你想通过这个导入来使用你的类型,你必须把它们写在一个简单的.ts文件中,如下所示:

  • src/@types/app.ts:*
export type AuthKeyT = string

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

import { AuthKeyT } from 'app'
mrfwxfqh

mrfwxfqh3#

你也可以像这样在tsconfig.json中添加path到你的编译器Optons中:

"compilerOptions": {
    "paths": {
      "types/*": [
        "./@types/*"
      ]
    }
}

然后是import { AuthKeyT } from 'types/app'

相关问题