fjp*_*urr 13 javascript typescript reactjs
假设我有一个这样定义的类型:
type gridProps = {
itemsArrayFiltered: object[],
cardWidth: number,
cardHeight: number
}
Run Code Online (Sandbox Code Playgroud)
我有一个像这样的 React 组件:
const Grid =
({ itemsArrayFiltered, cardWidth = 280, cardHeight }: gridProps) =>
(whatever)
Run Code Online (Sandbox Code Playgroud)
如果我没有在 gridProps 类型中提供 cardWidth 属性,则会收到错误消息:
类型“gridProps”上不存在属性“cardWidth”。ts(2339)
这是正确的,但问题是:提供默认值 280 是否还不够?我觉得我通过提供数字默认值并在 gridProps 类型中写入数字来重复代码。有没有更好的方法来避免这种情况?
the*_*ana 11
好吧,我知道您希望 TS 推断 cardWidth 属性类型,但不必为您的类型声明该属性。在这种情况下,您必须告诉 TS 您的类型具有属性 cardWidth,因为对象文字经过了过多的属性检查。至于你应该/可以如何做到这一点,@aWolf 提到你可以将 cardWidth 设置为可选:
type gridProps = {
itemsArrayFiltered: object[],
cardWidth?: number,
cardHeight: number,
}
Run Code Online (Sandbox Code Playgroud)
如果你想让类型保持倾斜,你也可以使用交叉点:
type gridProps = {
itemsArrayFiltered: object[],
cardHeight: number,
}
const Grid = ({ cardHeight, cardWidth = 280, itemsArrayFiltered }: GridProps & { cardWidth?: number }) { (whatever) }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14222 次 |
| 最近记录: |