要不要试着用TypeScript写GraphQL?
谁?
Who?
我最近开始接触GraphQL了。
GraphQL是什么?
-
- Clientが欲しい値だけを問い合わせるための仕組み
-
- 階層的にデータを要求できる
- 厳密な型定義(schema)がある
你可能会喜欢尝试一下 https://www.graphqlhub.com/playground 。
由于我对Angular比React更熟悉,所以我喜欢用Angular2强制运行Relay,这是我的兴趣爱好。
以下是一个用中文本地化的例子:https://quramy.github.io/angular2-graphql-note/
你有实现过GraphQL的服务器端吗?
var schema = new graphql.GraphQLSchema({
query: new graphql.GraphQLObjectType({
name: 'Query',
fields: {
user: {
type: userType,
args: {
id: { type: graphql.GraphQLString }
},
resolve: function (_, args) {
return data[args.id];
}
}
}
})
});
每次都会出现type之类的东西
id: { type: graphql.GraphQLString }, // ← これ
麻煩
我们使用静态类型语言
流も好きだけど、TypeScriptもね! (Liu2 ye3 hao3 xi1, dan4 TypeScript ye3 ne!)
可以给Class加上装饰器,然后生成Schema吗?
import { Schema, Query, ObjectType, Field, schemaFactory } from "graphql-decorator";
@ObjectType() class QueryType {
@Field() greeting(): string {
return "Hello, world!";
}
}
@Schema() class SchemaType {
@Query() query: QueryType;
}
const schema = schemaFactory(SchemaType);
怎么样? ?)
在TypeScript中,可以通过emitDecoratorMetadata将类型信息传递给Reflect。
我們使用這個來將類型信息轉換成 GraphQL 的 ObjectType。
请提供以下内容的中文翻译,只需要一种选择:
https://github.com/Quramy/graphql-decorator
请提供以下地址的中文翻译:
https://github.com/Quramy/graphql-decorator
用中文表达以下的意思,只需要一种选择:
所感
-
- 結局Decoratorだらけで楽なんだか大変なんだか分からん
-
- JAX-WSとかJAX-Bっぽい。
- 気が乗ればflow対応するかも。flow typeからmetadataにemitするいい感じのbabel-plugin募集中