【发布时间】:2020-08-08 22:31:55
【问题描述】:
我正在尝试像这样解构可选类型道具:
export interface Props {
style: object;
}
const MyComponent: React.FC<Props> = ({ style }) => {
const { width, height, ...newStyle } = style || {};
但我收到了打字稿警告:
TS2339: Property 'width' does not exist on type '{}'.
我该如何解决这个问题?
【问题讨论】:
-
您没想到吗?如果未定义样式,则您正在破坏一个确实既没有宽度也没有高度的对象。你不能有一个比对象更具体的类型吗?
-
如何在界面中定义样式以规避此警告?
-
那么 does style 有什么道具呢?除了你在这里展示的两个,我们不能告诉你。此外,无论界面中有什么,您的默认值也应该匹配。你不想“逃避”警告,TypeScript 会帮助你你的代码没有意义。
-
我编辑了这个问题。这是一个标准的 React Native 道具。这是一种风格。所有对象属性都是可选的。
-
IIRC 即使在默认情况下也有不止一种样式类型;例如,视图和文本具有不同的样式。但是如果所有的道具都是可选的,那么它可能没有有宽度和高度。
标签: reactjs typescript