我想在 React 中编写一个新的 Web 应用程序使用 Relay与 GraphQL 沟通服务器。最近JSX support为 TypeScript 引入.但是 DefinitelyTyped 上的中继没有类型声明文件 (.d.ts) .如何使用 TypeScript 编写我的应用程序而无需先为 Relay 编写类型文件?
最佳答案
Typescript 不要求您对所使用的所有库进行打字,强烈建议您使用它。无需输入即可使用 Relay:
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
用作常规 Relay 组件。这个想法是 require
是一个接受字符串并返回 any
的函数,因此您可以像在 vanilla Javascript 中那样使用 Relay
变量。
如果您不使用 Node.JS 类型,您可能需要为 require
添加类型。在你的 d.ts 文件的某处,添加:
interface NodeRequireFunction {
(id: string): any;
}
declare var require: NodeRequireFunction;
关于typescript - 如何在用 TypeScript (TSX) 编写的 React 应用程序中使用 Facebook Relay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34140567/