我是使用typescript和react dates包的新手
我不确定以下类型的是什么意思
type Props = Omit<
DayPickerRangeControllerShape,
| 'numberOfMonths'
| 'focusedInput'
| 'onFocusChange'
| 'hideKeyboardShortcutsPanel'
| 'noBorder'
>;
function DateRangePicker(props: Props) {
return (
<Wrapper>
<DayPickerRangeController
{...props}
numberOfMonths={3}
onFocusChange={noop}
hideKeyboardShortcutsPanel
noBorder
horizontalMonthPadding={32}
dayPickerNavigationInlineStyles={{
display: 'flex',
justifyContent: 'space-between',
}}
</Wrapper>
);
}
在这种情况下,类型Props
和Omit
在这里起什么作用?
这一行function DateRangePicker(props: Props)
意味着DateRangePicker
组件道具应该与前面定义的Props
类型兼容。
这个区块
type Props = Omit<
DayPickerRangeControllerShape,
| 'numberOfMonths'
| 'focusedInput'
| 'onFocusChange'
| 'hideKeyboardShortcutsPanel'
| 'noBorder'
>;
意味着类型Props
应该等于DayPickerRangeControllerShape
接口,但没有一些字段,如numberOfMonths
、focusedInput
等。
Omit
基本上从您传递给它的接口或类型中剥离(删除(一些字段
静态Typescript,
Omit<Type, Keys>
通过从中拾取所有属性来构造类型键入,然后删除"关键点"。
基本上,您可以使用Omit
通过删除某些属性来从现有类型创建新类型。
例如,
interface Employee {
id: number;
name: string;
}
type EmployeeWithoutName = Omit<Employee, "name">;
const employee: Employee = {
id: 1
name: "Richard"
};
const employeeWithoutName: EmployeeWithoutName = {
id: 1
};
employeeWithoutName.name = "Jones"; // Throws an error.
在react中,props表示属性,通常从一个组件传递到另一个组件。