Как использовать response-datetime с реагировать + машинописный текст (внутри TSX)
react-datetime
есть файл определения машинописи, но он не работает (для меня). Из того, что я вижу, файл определения ts экспортирует другой тип (ReactDatetime
), чем то, что находится в реальном файле JavaScript (Datetime
).
Я пошел вперед и изменился react-datetime.d.ts
Файл typings для экспорта (что я думаю) является правильным типом (доступен в gist):
interface Datetime extends React.ComponentClass<DatetimepickerProps> {}
export { Datetime }
И TypeScript жалуется, что не может найти Datetime
:
(26,10): error TS2304: Cannot find name 'Datetime'.
Я предполагаю, что есть что-то довольно простое, что я, должно быть, упускаю с точки зрения типирования и этого компонента Попытка заставить его работать с исходным файлом типографий привела к невозможности импортировать модуль в первую очередь, даже если react-datetime.d.ts
файл был указан с помощью /// <reference path="../node_modules/react-datetime/react-datetime.d.ts" />
директивы.
Минималистичный пример того, как класс пытается использовать <Datetime/>
:
/// <reference path="../../node_modules/react-datetime/react-datetime.d.ts" />
import * as React from "react";
import { Datetime } from "react-datetime";
export interface DateTimeResolutionProps { timestamp: number, resolution: number }
export class DateTimeResolutionPicker extends React.Component<DateTimeResolutionProps, {}> {
render() {
// console.log(Datetime);
return (<div>
<Datetime/>
</div>);
}
}
2 ответа
Вы должны импортировать его так же, как вы импортировали React
модуль:
import * as Datetime from "react-datetime";
Тогда он не будет жаловаться, что не нашел Datetime
,
Что касается имен, вы решаете, какое имя будет, оно может быть ReactDatetime
если ты хочешь:
import * as ReactDatetime from "react-datetime";
То же самое происходит с React
модуль, если вы посмотрите на файл определения, он покажет:
declare namespace __React {
...
}
declare module "react" {
export = __React;
}
Вы экспортируете Datetime
как тип, даже если компонент React должен быть значением (будь то SFC или класс). Вот почему ваша версия не работает.
Версия в репозитории в настоящее время определяет его как модуль CommonJS, что означает, что на данный момент он должен требоваться с CommonJS-совместимым синтаксисом:
import Datetime = require("react-datetime");