Реагировать на машинописный текст, определить внешний модуль

Я хочу использовать 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 и поместить его в пространство имен другого?

Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
0
0
484
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я создал файл _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
}

Другие вопросы по теме