typescript - Apollo 服务器中的打字稿语法
问题描述
正如您在 apollo 服务器中所知道的,您可以通过将字符串传递给 gql 来定义服务器的模式。
const typeDefs = gql`
type Query {
getBtcRates: [BtcRate]
}
`'
但是什么是gql?是函数还是方法?
是定义
export const gql: (
template: TemplateStringsArray | string,
...substitutions: any[]
) => DocumentNode = gqlTag;
对我来说,它看起来更像一个函数,但我不知道这种语法,所以想知道它到底是什么以及为什么这样写。
解决方案
gql
正在使用称为标记模板的语法,并且不是 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!
推荐阅读
- apache-flink - 如何通过 Flink Row 中的 FieldName 获取值?
- machine-learning - Firestore 上的热门话题/热门文档
- dynamic - OpenAI环境下的动态观察空间(带Box)
- amazon-web-services - 在 AWS 中设置自动 HDFS
- nginx - 如何在 GoogleCloud Compute 引擎中安装 SSL 证书 (DV) 基于 DNS CNAME 的身份验证?
- javascript - JavaScript删除另一个数组中包含空元素的数组
- node.js - Node.js Express Post 请求正文为空
- firebase - 如何使用颤振从 Firebase 实时数据库中检索特定数据?
- java - 如何将值保存到Edittext?
- teradata - 使用 Teradata 中增量表中的 MERGE/INSERT 将非重复项插入主表