用打字稿反应,定义环境模块

reactstrap with typescript, define ambient module

我想在 typescript 中使用 reactstrap

有这些类型的类型:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/reactstrap/index.d.ts

Reactstrap 在页面上作为 Reactstrap 全局变量可用。我认为在环境模块中添加它就像添加 reactreact dom

一样简单

这是我的 global.d.ts

import * as react from "react"
import * as react_dom from "react-dom"
import * as reactstrap from "reactstrap"

declare global {
    type React = typeof react
    type ReactDOM = typeof react_dom
    type Reactstrap = typeof reactstrap
}

我可以使用 React.Component 和 jsx 而无需导入,它在全球范围内可用。但我不能使用 Reactstrap.Alert,tsc 说 Reactstrap.Alert 是一种类型,但像值一样使用。

我可以在 d.ts 文件中手动添加此字符串 export as namespace Reactstrap,但它看起来像是一个 hack,并且此更改未存储在我的 git 存储库中。是否可以从一个 d.ts 导出所有 类 并将其放入另一个的命名空间?

我在 global.d.ts 旁边创建了文件 _reactstrap.d.ts,内容如下:

export * from "reactstrap"

export as namespace Reactstrap;

并修改global.d.ts如下:

import * as react from "react"
import * as react_dom from "react-dom"
import * as reactstrap from "./_reactstrap"

declare global {
    type React = typeof react
    type ReactDOM = typeof react_dom
    type Reactstrap = typeof reactstrap
}