Skip to content

Commit c73dd86

Browse files
committed
feat: 增加枚举类型注释
1 parent 8d4a7c7 commit c73dd86

3 files changed

Lines changed: 28 additions & 5 deletions

File tree

src/generator/serviceGenarator.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1507,6 +1507,7 @@ export default class ServiceGenerator {
15071507
schemaObject,
15081508
getType: (schema: ISchemaObject, namespace?: string) =>
15091509
this.getType(schema, namespace),
1510+
openAPIData: this.openAPIData,
15101511
});
15111512
}
15121513

src/generator/serviceGeneratorHelper.ts

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,9 @@ export function resolveAllOfObject(params: {
215215
export function getProps(params: {
216216
schemaObject: SchemaObject;
217217
getType: (schema: SchemaObject) => string;
218+
openAPIData?: OpenAPIObject;
218219
}): IPropObject[] {
219-
const { schemaObject, getType } = params;
220+
const { schemaObject, getType, openAPIData } = params;
220221
const requiredPropKeys = schemaObject?.required ?? false;
221222
const properties = schemaObject.properties;
222223

@@ -226,15 +227,35 @@ export function getProps(params: {
226227
// eslint-disable-next-line no-useless-escape
227228
propKey = propKey.replace(/[\[|\]]/g, '');
228229

230+
// 获取描述信息,如果是 $ref 引用,尝试获取引用对象的描述
231+
let desc = [schema.title, schema.description]
232+
.filter((item) => item)
233+
.join(' ')
234+
.replace(lineBreakReg, '');
235+
236+
// 如果是 $ref 引用,尝试获取引用对象的描述
237+
if (isReferenceObject(schema) && openAPIData) {
238+
const refName = getLastRefName(schema.$ref);
239+
const refSchema = openAPIData.components?.schemas?.[
240+
refName
241+
] as SchemaObject;
242+
if (refSchema) {
243+
const refDesc = [refSchema.title, refSchema.description]
244+
.filter((item) => item)
245+
.join(' ')
246+
.replace(lineBreakReg, '');
247+
if (refDesc) {
248+
desc = desc + refDesc;
249+
}
250+
}
251+
}
252+
229253
// 复用 schema 部分字段
230254
return {
231255
...schema,
232256
name: propKey,
233257
type: getType(schema),
234-
desc: [schema.title, schema.description]
235-
.filter((item) => item)
236-
.join(' ')
237-
.replace(lineBreakReg, ''),
258+
desc: desc,
238259
// 如果没有 required 信息,默认全部是非必填
239260
required: requiredPropKeys
240261
? requiredPropKeys.some((key) => key === propKey)

templates/interface.njk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
{%- endfor %}
4444
{%- else %}
4545
{%- if type.isEnum %}
46+
/** {{ type.description }} */
4647
export enum {{ type.typeName | safe }} {{ type.type }};
4748

4849
export type I{{ type.typeName | safe }} = keyof typeof {{ type.typeName }}

0 commit comments

Comments
 (0)