【发布时间】:2020-11-30 09:38:40
【问题描述】:
我正在使用表格元素创建日历,并且正在使用 TypeScript。这是我第一次使用 TypeScript,我很困惑为什么我的类型不被接受。正如您将在下面的代码中看到的那样,我使用 JSX 元素作为并根据 7 行推送它们。
const blankCells: JSX.Element[] = [];
for (let i = 0; i < firstDayOfMonth(); i++) {
blankCells.push(
<td role="presentation">None</td>
);
}
const datesInMonth: JSX.Element[] = [];
for (let day = 1; day <= daysOfMonth; day++) {
datesInMonth.push(
<td key={day} role="presentation">
<button>{day}</button>
</td>
);
}
const totalDateElementsOfCalendar:JSX.Element[] = [...blankCells, ...datesInMonth];
const calendarRows: (JSX.Element | JSX.Element[])[] = [];
let calendarSlot: JSX.Element | JSX.Element[] = [];
totalDateElementsOfCalendar.forEach((dateElement, i) => {
if (i % 7 !== 0) {
calendarSlot.push(dateElement);
} else {
calendarRows.push(calendarSlot);
calendarSlot = [];
calendarSlot.push(dateElement);
}
if (i === totalDateElementsOfCalendar.length - 1) {
calendarRows.push(calendarSlot);
}
});
排队
if (i % 7 !== 0) {
calendarSlot.push(dateElement);
TypeScript 给我一个错误“属性 'push' 在类型 'Element | Element[]' 上不存在。 “元素”类型上不存在属性“推送”。 (ts2339)" 这个错误在它下面的 else 语句中不存在。我对我定义的错误感到困惑。如果能解释为什么会发生这种情况以及如何解决它,我会很高兴。
【问题讨论】:
标签: javascript reactjs typescript