我不知道如何在handleDateChange
函数中注解dateObj
参数
- 应用程序tsx**
import { useState } from 'react';
import logo from './logo.svg';
import './App.css';
import { DatePicker } from 'antd'; // for css
import moment from 'moment';
const App = () => {
const [date, setDate] = useState(new Date())
const handleDateChange = (dateObj: Date, dateStr: string) => {
setDate(dateObj);
}
return (
<div className="App">
<DatePicker defaultValue={moment(date)} onChange={handleDateChange} />
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.tsx</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
export default App;
兹林特是这么说的-
类型'(日期对象:日期,日期字符串:string)=〉void '不能赋值给类型'(日期:时刻,日期字符串:string)=〉void "。参数" dateObj "和" date "的类型不兼容。类型" Moment "无法分配给类型" Date "。类型" Moment "中缺少属性" toDateString "
但我不知道该怎么克服。
4条答案
按热度按时间x6yk4ghg1#
这是必须的。
然后
无需单独导入
Moment
,因为根据此参考,moment命名空间中存在interface
而非class
hgqdbh6s2#
只是将此答案推入此主题,因为它似乎解决了此问题,并且在另一个问题中未标记为正确答案:如何使用typescript导入moment.js?
您需要在TS中分别导入 moment() 函数和 Moment 类。
我在打印文档here中发现了一个注解。
/~注意ES6模块不能直接导出可调用函数。~此文件应使用CommonJS样式导入:*~ import x =需要(“某个库”);
因此,将moment js导入到typescript的代码实际上是这样的:
z2acfund3#
我尝试了这个answer reference,并得到如下警告:
我用这个来修正
我希望这篇文章能帮助您在尝试在typescript中实现antd datepicker时遇到这个警告
idv4meu84#
如果大家想知道迁移到antd v5后应该做什么,请按照上面的@muhammad-irva答案,将
dateObject: moment.Moment
替换为dateObject: Dayjs | null