如何将 react-datetime 与 react + typescript 结合使用(在 tsx 中)
How to use react-datetime with react + typescript (inside tsx)
react-datetime
has a typescript definition file included, but it does not work (for me). From what I can see, the ts definition file exports a different type (ReactDatetime
) than what is in actual javascript file (Datetime
)。
我继续更改 react-datetime.d.ts
打字文件以导出(我认为)正确的类型(在 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" />
指令引用的。
class 尝试使用 <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>);
}
}
您将 Datetime
作为类型导出,即使 React 组件需要是一个值(无论是 SFC 还是 class)。这就是您的版本无法正常工作的原因。
The version on the repo 目前将它定义为一个 CommonJS 模块,这意味着现在它应该需要 CommonJS 兼容的语法:
import Datetime = require("react-datetime");
您应该像导入 React
模块一样导入它:
import * as Datetime from "react-datetime";
那就不会抱怨找不到Datetime
.
至于名字,你决定取什么名字,可以是ReactDatetime
如果你想:
import * as ReactDatetime from "react-datetime";
React
模块也是如此,如果您查看定义文件,它将显示:
declare namespace __React {
...
}
declare module "react" {
export = __React;
}
react-datetime
has a typescript definition file included, but it does not work (for me). From what I can see, the ts definition file exports a different type (ReactDatetime
) than what is in actual javascript file (Datetime
)。
我继续更改 react-datetime.d.ts
打字文件以导出(我认为)正确的类型(在 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" />
指令引用的。
class 尝试使用 <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>);
}
}
您将 Datetime
作为类型导出,即使 React 组件需要是一个值(无论是 SFC 还是 class)。这就是您的版本无法正常工作的原因。
The version on the repo 目前将它定义为一个 CommonJS 模块,这意味着现在它应该需要 CommonJS 兼容的语法:
import Datetime = require("react-datetime");
您应该像导入 React
模块一样导入它:
import * as Datetime from "react-datetime";
那就不会抱怨找不到Datetime
.
至于名字,你决定取什么名字,可以是ReactDatetime
如果你想:
import * as ReactDatetime from "react-datetime";
React
模块也是如此,如果您查看定义文件,它将显示:
declare namespace __React {
...
}
declare module "react" {
export = __React;
}