Вы пишете приложение на ts, хотите использовать nodejs модуль (предположим https://github.com/rexxars/react-markdown), который в своем теле имеет такую форму записи:
// module body
module.exports = ReactMarkdown;
Вам не повезло, и готовый тайпингов для модуля нет, вам придется написать свои. Форма записи module.exports =
нарушает принципы работы es6 модулей (а ts модули совместимые с es6), и es6 модуль не может экспортировать значение как результат модуля (только свойство объекта или значения экспорта по умолчанию).
Чтобы ваш код запузырился нужно в d.ts файле описать экспорт как export =
:
declare module 'react-markdown' {
import {Component} from 'react'
interface IProps {
source: string
className?: string
containerTagName?: string
}
interface IState {
}
export = class ReactMarkdown extends Component<IProps, IState> {}
}
А в потребителе использовать require
для импорта модуля:
import ReactMarkdown = require('react-markdown')
UPD документация по ts модулям: https://www.typescriptlang.org/docs/handbook/modules.html