Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs TS2339:属性高度不存在于';{}';,在分解可能未定义的对象时_Reactjs_Typescript - Fatal编程技术网

Reactjs TS2339:属性高度不存在于';{}';,在分解可能未定义的对象时

Reactjs TS2339:属性高度不存在于';{}';,在分解可能未定义的对象时,reactjs,typescript,Reactjs,Typescript,我正在尝试对可选类型的道具进行如下分解: export interface Props { style: object; } const MyComponent: React.FC<Props> = ({ style }) => { const { width, height, ...newStyle } = style || {}; 如何解决此问题?您已将样式声明为简单的对象,它也没有宽度或高度 使用适当的类型信息定义样式。例如,如果这是HTML元素的style属

我正在尝试对可选类型的道具进行如下分解:

export interface Props {
  style: object;
}

const MyComponent: React.FC<Props> = ({ style }) => {
  const { width, height, ...newStyle } = style || {};

如何解决此问题?

您已将
样式
声明为简单的
对象
,它也没有
宽度
高度

使用适当的类型信息定义
样式
。例如,如果这是HTML元素的
style
属性,则正确的类型是
CSSStyleDeclaration

export interface Props {
    style: CSSStyleDeclaration;
}

const MyComponent: React.FC<Props> = ({ style }) => {
    const { width, height, ...newStyle } = style || {};
    // ...
};

…至少。事实上,您正在将其他属性收集到
newStyle
中,这表明您可能需要更多。您正在应用默认值的事实表明,
样式
本身应该标记为可选(
)。

您没有想到吗?如果未定义样式,则破坏的对象实际上既没有宽度也没有高度。你能不能从一开始就有一个比object更具体的类型?我如何在界面中定义样式来避免这个警告?样式有什么道具?除了你在这里展示的两个,我们不能告诉你。此外,无论界面中有什么,您的默认值也应该匹配。你不想“逃避”警告,TypeScript告诉你你的代码没有意义,这很有帮助。我编辑了这个问题。这是一个标准的本地道具。这是一种风格。所有对象属性都是可选的。IIRC即使在默认设置中也有多个样式类型;例如,视图和文本具有不同的样式。但是如果所有的道具都是可选的,那么它可能没有宽度和高度。谢谢。作为将来的参考,我如何以及在哪里可以找到我需要的
CSSStyleDeclaration
。这些都列在某个地方吗?(顺便说一句,我需要
ViewStyle
)@raarts-恐怕我不知道React Native的答案。对于DOM内容,我查看了
HTMLElement
上声明的
style
类型是什么,它使用的是TypeScript:-)
export interface Props {
    style: CSSStyleDeclaration;
}

const MyComponent: React.FC<Props> = ({ style }) => {
    const { width, height, ...newStyle } = style || {};
    // ...
};
interface Props {
    style: {
        width?: number;
        height?: number;
    }
}