NSwag生成TypeScript-Angular代码:枚举与DateTime类型问题求助
解决方案
1. 修复枚举生成格式问题
后端OpenApi配置调整
在AddOpenApiDocument中启用枚举字符串序列化,确保Swagger文档输出枚举成员名称而非数字:
services.AddOpenApiDocument(settings => { // 其他已有配置... settings.SchemaSettings.EnumsAsStrings = true; settings.SchemaSettings.GenerateEnumMappingDescription = true; });
NSwag生成配置调整
在config.nswag的codeGenerators.typeScriptAngular节点下添加/修改以下配置:
"enumStyle": "String", "generateEnumMapping": true, "enumNameGenerator": "OriginalEnumNameGenerator"
调整后生成的TypeScript枚举会直接复用.NET枚举的成员名称(如BB、BB18),而非自动生成的NUMBER_0格式。
2. 将DateTime类型转换为TypeScript Date类型
在config.nswag的codeGenerators.typeScriptAngular节点中设置日期时间类型映射:
"dateTimeType": "Date", "dateType": "Date"
此配置会将.NET实体类中的DateTime属性直接生成为TypeScript的Date类型,替代默认的string类型。
生效验证
确保生成命令使用最新的config.nswag配置,例如:
nswag run config.nswag
完成以上配置调整后,重新生成TypeScript代码即可满足需求。
内容的提问来源于stack exchange,提问作者Adam Charusta
相关产品推荐
相关产品推荐

