首页 > 解决方案 > TypeScript - 检查未知类型的变量是否具有某些属性

问题描述

我正在使用 typescript inrelay并且props传递下来的 type 是unknown. 我尝试了几种方法来说服编译器它可以具有某些属性,但它一直向我显示错误:

<QueryRenderer
  environment={environment}
  query={testQuery}
  variables={{}}
  render={({ error, props }) => {
    if (error) {
      return <div>Error!</div>;
    }
    if (!props) {
      return <div>Loading...</div>;
    }
    if (!!props && _.isObject(props) && props.hasOwnProperty("Messages"))
      return <MessageList messages={props.Messages} />;
  }}
/>;

上面的代码不起作用,打字稿仍然警告我

“对象”类型上不存在属性“消息”。

如何使这个简单的示例工作而不使我的代码看起来很可怕?非常感谢!

标签: reactjstypescriptrelay

解决方案


您应该从查询中注释特定的 GraphTaggedNode。这将是您的testQuery变量中的查询名称。在下面的示例中,我将其称为 TestQuery。但它应该以FileName_Queryin pascal 大小写为前缀。

props现在应该用TestQueryResponse.

<QueryRenderer<TestQuery>
  ...
 />

推荐阅读