реагировать с машинописью, определять окружающий модуль - PullRequest
0 голосов
/ 29 мая 2019

Я хочу использовать reactstrap с машинописью.

Существуют варианты для этих типов: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/reactstrap/index.d.ts

Reactstrap доступен на странице как Reactstrap глобальная переменная. Я думал, что добавить его в окружающий модуль так же просто, как добавить react и react 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 это тип, но используется как значение.

Я могу вручную добавить эту строку export as namespace Reactstrap в файл d.ts, но она выглядит как хак, и эти изменения не сохраняются в моем git-репо. Можно ли экспортировать все классы из одного d.ts и поместить его в пространство имен другого?

1 Ответ

0 голосов
/ 29 мая 2019

Я создал файл _reactstrap.d.ts рядом с global.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
}
...