我想在React中编写一个新的 Web 应用程序,它使用Relay与GraphQL服务器进行通信。最近为TypeScript引入了JSX 支持。但是没有为 Relay指定类型声明文件 (.d.ts) 。如何在 TypeScript 中编写我的应用程序,而无需先为 Relay 编写类型文件?
问问题
2052 次
1 回答
3
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
用作常规中继组件。这个想法是require
一个函数,它接受一个字符串并返回any
,这样你就可以Relay
像在 vanilla Javascript 中一样使用变量。
如果您不使用 Node.JS 类型,则可能需要为require
. 在 d.ts 文件的某处,添加:
interface NodeRequireFunction {
(id: string): any;
}
declare var require: NodeRequireFunction;
于 2015-12-07T23:50:13.877 回答