将 import 语句添加到 global.d.ts 会破坏类型和模块声明
Adding `import` statement to `global.d.ts` destroys type and module declarations
在我的 Next.js 网络项目中,我的 types/global.d.ts
是这样开始的:
declare module 'react-zeroconfig-components'
interface Product {
...
}
我正在使用 openapi-typescript
从我的 Swagger OpenAPI 定义生成类型,但是当我导入生成的 swagger.ts
文件时:
import { definitions } from 'types/swagger'
declare module 'react-zeroconfig-components'
interface Product {
...
}
…none global.d.ts
中的另一个 types/interfaces 不再工作:
Type error: Cannot find name 'Product'.
并且 declare module
停止工作:
Could not find a declaration file for module 'react-zeroconfig-components'
这里有什么问题?
使用import
使文件成为模块,不再是环境类型声明文件。要解决此问题,请使用奇异的导入函数语法:
type SomethingCool = import("types/swagger").definitions;
这是因为如果您导入某些内容并将鼠标悬停在上面:
import mod from "cool-module";
您可能会看到编辑器(至少 VSCode)显示 import("cool-module")
作为类型。
所以在这里我们将使用它来减少静态 import
关键字的使用。
在我的 Next.js 网络项目中,我的 types/global.d.ts
是这样开始的:
declare module 'react-zeroconfig-components'
interface Product {
...
}
我正在使用 openapi-typescript
从我的 Swagger OpenAPI 定义生成类型,但是当我导入生成的 swagger.ts
文件时:
import { definitions } from 'types/swagger'
declare module 'react-zeroconfig-components'
interface Product {
...
}
…none global.d.ts
中的另一个 types/interfaces 不再工作:
Type error: Cannot find name 'Product'.
并且 declare module
停止工作:
Could not find a declaration file for module 'react-zeroconfig-components'
这里有什么问题?
使用import
使文件成为模块,不再是环境类型声明文件。要解决此问题,请使用奇异的导入函数语法:
type SomethingCool = import("types/swagger").definitions;
这是因为如果您导入某些内容并将鼠标悬停在上面:
import mod from "cool-module";
您可能会看到编辑器(至少 VSCode)显示 import("cool-module")
作为类型。
所以在这里我们将使用它来减少静态 import
关键字的使用。