繁体   English   中英

如何在使用TypeScript(TSX)编写的React应用程序中使用Facebook Relay?

[英]How to use Facebook Relay in a React app written in TypeScript (TSX)?

我想在React中编写一个新的Web应用程序,它使用RelayGraphQL服务器进行通信。 最近为TypeScript引入了JSX支持 但是在DefinitelyTyped上没有用于Relay的打包声明文件(.d.ts)。 如何在TypeScript中编写我的应用程序而不必先为Relay写一个打字文件?

Typescript不要求你为你使用的所有库都打字,强烈推荐。 要使用没有打字的接力:

import * as React from "react"
let Relay = require("react-relay")

interface HelloProps extends React.Props<HelloComponent> {
  viewer: {
    message: string
  }
}

class HelloComponent extends React.Component<HelloProps,void> {
  render() {
    return <div>Hello { this.props.viewer.message }</div>
  }
}

let Hello = Relay.createContainer(HelloComponent, {
  fragments: {
    viewer: () => Relay.QL`fragment on Viewer { message }`
  }
})

然后使用Hello作为常规中继组件。 想法是require是一个接受字符串并返回any字符串的函数,因此您可以像在vanilla Javascript中那样使用Relay变量。

如果您没有使用Node.JS类型,则可能需要为require添加类型。 在d.ts文件的某处,添加:

interface NodeRequireFunction {
  (id: string): any;
}

declare var require: NodeRequireFunction;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM