Apollo 服务器中的打字稿语法
Posted
技术标签:
【中文标题】Apollo 服务器中的打字稿语法【英文标题】:Typescript Syntax in Apollo server 【发布时间】:2020-01-21 01:43:38 【问题描述】:正如您在 appollo 服务器中所知道的,您可以通过将字符串传递给 gql 来定义服务器的架构。
const typeDefs = gql`
type Query
getBtcRates: [BtcRate]
`'
但是什么是gql?是函数还是方法?
定义
export const gql: (
template: TemplateStringsArray | string,
...substitutions: any[]
) => DocumentNode = gqlTag;
对我来说它看起来更像一个函数,但我不知道这种语法,所以想知道它到底是什么以及为什么这样写。
【问题讨论】:
What is the purpose of template literals (backticks) following a variable definition in ES6?的可能重复 【参考方案1】:gql
使用称为tagged templates 的语法,并且不是特定于 TypeScript 的。再举一个例子,styled-components
也依赖于这种语法。
来自文档:
标签允许您使用函数解析模板文字。标记函数的第一个参数包含一个字符串值数组。其余参数与表达式有关。
这是如何工作的一个基本示例:
var variable = 'world';
function myTag(strings, exp)
var str0 = strings[0]; // "Hello "
var str1 = strings[1]; // "!"
return `$str0$exp$str1`;
var output = myTag`Hello $ variable !`;
console.log(output);
// Hello world!
【讨论】:
以上是关于Apollo 服务器中的打字稿语法的主要内容,如果未能解决你的问题,请参考以下文章
带有打字稿的 Apollo 网关不会在上下文中接受用户 ID
如何使用 Apollo Rover + Codegen 生成打字稿模式类型
尝试使用 React Apollo Query 组件进行 GraphQL 查询,打字稿导致错误