Skip to content

Commit 8d86fdb

Browse files
committed
refactor(resolve): move null & undefined logics into primitive transformer
1 parent 6b32d5b commit 8d86fdb

File tree

2 files changed

+11
-22
lines changed

2 files changed

+11
-22
lines changed

packages/cli/src/metadataGeneration/transformer/primitiveTransformer.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@ export class PrimitiveTransformer extends Transformer {
1818
return 'void';
1919
case SyntaxKind.UndefinedKeyword:
2020
return 'undefined';
21+
case SyntaxKind.NullKeyword:
22+
return 'null';
2123
default:
2224
return undefined;
2325
}
24-
};
26+
}
2527

26-
public transform(typeNode: TypeNode, parentNode?: Node): Tsoa.PrimitiveType | undefined {
28+
public transform(typeNode: TypeNode, parentNode?: Node): Tsoa.Type | undefined {
2729
const resolvedType = PrimitiveTransformer.resolveKindToPrimitive(typeNode.kind);
2830
if (!resolvedType) {
2931
return;
@@ -39,15 +41,17 @@ export class PrimitiveTransformer extends Transformer {
3941
case 'void':
4042
case 'undefined':
4143
return { dataType: resolvedType };
44+
case 'null':
45+
return {
46+
dataType: 'enum',
47+
enums: [null],
48+
};
4249
default:
4350
return assertNever(resolvedType);
4451
}
4552
}
4653

47-
private transformNumber(
48-
defaultNumberType: NonNullable<"double" | "float" | "integer" | "long" | undefined>,
49-
parentNode?: Node,
50-
): Tsoa.PrimitiveType {
54+
private transformNumber(defaultNumberType: NonNullable<'double' | 'float' | 'integer' | 'long' | undefined>, parentNode?: Node): Tsoa.PrimitiveType {
5155
if (!parentNode) {
5256
return { dataType: defaultNumberType };
5357
}
@@ -74,4 +78,4 @@ export class PrimitiveTransformer extends Transformer {
7478
}
7579
}
7680

77-
type ResolvesToPrimitive = 'number' | 'string' | 'boolean' | 'void' | 'undefined' | undefined;
81+
type ResolvesToPrimitive = 'number' | 'string' | 'boolean' | 'void' | 'undefined' | 'null' | undefined;

packages/cli/src/metadataGeneration/typeResolver.ts

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,21 +53,6 @@ export class TypeResolver {
5353
return primitiveType;
5454
}
5555

56-
if (this.typeNode.kind === ts.SyntaxKind.NullKeyword) {
57-
const enumType: Tsoa.EnumType = {
58-
dataType: 'enum',
59-
enums: [null],
60-
};
61-
return enumType;
62-
}
63-
64-
if (this.typeNode.kind === ts.SyntaxKind.UndefinedKeyword) {
65-
const undefinedType: Tsoa.UndefinedType = {
66-
dataType: 'undefined',
67-
};
68-
return undefinedType;
69-
}
70-
7156
if (ts.isArrayTypeNode(this.typeNode)) {
7257
const arrayMetaType: Tsoa.ArrayType = {
7358
dataType: 'array',

0 commit comments

Comments
 (0)