Skip to content

Commit b75ff9a

Browse files
committed
feat: isAssignableToSimpleTypeKind now treats kind OBJECT without members as kind ANY
1 parent afa3319 commit b75ff9a

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/is-assignable-to-simple-type-kind.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ export interface AssignableToSimpleTypeKindOptions {
1616
* @param checker TypeCHecker if type is a typescript type
1717
* @param options Options
1818
*/
19-
export function isAssignableToSimpleTypeKind(type: SimpleType, kind: SimpleTypeKind | SimpleTypeKind[], options?: AssignableToSimpleTypeKindOptions): boolean;
20-
export function isAssignableToSimpleTypeKind(type: Type, kind: SimpleTypeKind | SimpleTypeKind[], checker: TypeChecker, options?: AssignableToSimpleTypeKindOptions): boolean;
21-
export function isAssignableToSimpleTypeKind(type: Type | SimpleType, kind: SimpleTypeKind | SimpleTypeKind[], checker: TypeChecker, options?: AssignableToSimpleTypeKindOptions): boolean;
22-
export function isAssignableToSimpleTypeKind(
19+
export function isAssignableToSimpleTypeKind (type: SimpleType, kind: SimpleTypeKind | SimpleTypeKind[], options?: AssignableToSimpleTypeKindOptions): boolean;
20+
export function isAssignableToSimpleTypeKind (type: Type, kind: SimpleTypeKind | SimpleTypeKind[], checker: TypeChecker, options?: AssignableToSimpleTypeKindOptions): boolean;
21+
export function isAssignableToSimpleTypeKind (type: Type | SimpleType, kind: SimpleTypeKind | SimpleTypeKind[], checker: TypeChecker, options?: AssignableToSimpleTypeKindOptions): boolean;
22+
export function isAssignableToSimpleTypeKind (
2323
type: Type | SimpleType,
2424
kind: SimpleTypeKind | SimpleTypeKind[],
2525
optionsOrChecker?: TypeChecker | AssignableToSimpleTypeKindOptions,
@@ -31,6 +31,15 @@ export function isAssignableToSimpleTypeKind(
3131
options = optionsOrChecker as AssignableToSimpleTypeKindOptions || {};
3232
}
3333

34+
// Make sure that an object without members is treated as ANY
35+
switch (type.kind) {
36+
case SimpleTypeKind.OBJECT:
37+
if (type.members == null || type.members.length === 0) {
38+
return isAssignableToSimpleTypeKind({ kind: SimpleTypeKind.ANY }, kind, options);
39+
}
40+
break;
41+
}
42+
3443
switch (type.kind) {
3544
case SimpleTypeKind.ENUM:
3645
case SimpleTypeKind.UNION:

0 commit comments

Comments
 (0)