Str*_*ch0 2 javascript node.js graphql prisma graphql-codegen
我的 GraphQL 模式中有一个自定义标量,我希望我的 Codegen 为我生成正确的类型。
我的架构如下所示:
scalar Decimal
type Item {
price: Decimal!
}
Run Code Online (Sandbox Code Playgroud)
我为此标量添加了一个使用 [Decimal.js][1] 的自定义解析器。
当我从此架构生成 Typescript 类型时,我希望它能够识别price为 Decimal 类型并具有 Decimal.js 提供的属性。
我的代码生成配置如下所示:
schema: "./src/typeDefs/index.ts"
generates:
./src/types.d.ts:
config:
scalars:
Decimal: Decimal
plugins:
- typescript
- typescript-resolvers
Run Code Online (Sandbox Code Playgroud)
虽然这会生成Decimal类型,但它不会将其识别为 Decimal.js 的类型,因此它没有库公开的任何方法。
它生成以下类型:
export type Scalars = {
ID: string;
String: string;
Boolean: boolean;
Int: number;
Float: number;
Decimal: Decimal; // doesn't have any Decimal.js props
};
Run Code Online (Sandbox Code Playgroud)
如何告诉 codegen 使用 Decimal.js 生成正确的 Decimal 类型?[1]: https: //www.npmjs.com/package/decimal.js
Typescript 插件没有正确记录它,但在博客上提到了:
- 您可以从节点模块包 ( ) 导入类型
User: models-lib#UserType。- 您还可以映射到内置语言类型 (
DateType: Date)- 也可以对导入进行别名 (
User: ./models#User as MyCustomUserType)
这不仅适用于mappers,也适用于scalars。所以你正在寻找
schema: "./src/typeDefs/index.ts"
generates:
./src/types.d.ts:
config:
scalars:
Decimal: decimal.js#Decimal
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^
plugins:
- typescript
- typescript-resolvers
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3692 次 |
| 最近记录: |