Javascript TypeScript-检查是否给定';任何';参数是否为自定义类型?

Javascript TypeScript-检查是否给定';任何';参数是否为自定义类型?,javascript,typescript,casting,typeof,type-assertion,Javascript,Typescript,Casting,Typeof,Type Assertion,我有这样一个函数模板: function (..., args: any) {...} 我有一个类叫做CreateLobbyParameter: export class CreateLobbyParameter { userId: number; gameMode: GameMode; } 如果给定,则任何类型化的args参数与CreateLobbyParameter不相似(例如{userId:0,gameMode:0},但不是{userId:0});我想处理那种情况 我尝

我有这样一个函数模板:

function (..., args: any) {...}
我有一个类叫做
CreateLobbyParameter

export class CreateLobbyParameter {
    userId: number;
    gameMode: GameMode;
}
如果给定
,则任何
类型化的args参数与
CreateLobbyParameter
不相似(例如
{userId:0,gameMode:0}
,但不是
{userId:0}
);我想处理那种情况

我尝试了
typeof(arg作为CreateLobbyParameter)
,但它返回参数
{userId:0,gameMode:0}
的字符串
“object”
,而不是
CreateLobbyParameter。


另外,
arg instanceof CreateLobbyParameter
返回false。

将其视为JavaScript

var userId = arg.userId;
var gameMode = arg.gameMode;
if (userId && gameMode) {
   var myCreateLobbyParameter = new CreateLobbyParameter {
      userId = userId,
      gameMode = gameMode
   }
}

然后你有一个真正的
CreateLobbyParameter
对象要处理,或者你可以对一个不一致的参数做任何事情。

我实际上找到了另一种方法:

export function isSimilar(object: any, target: any): boolean {
    if (typeof(object) !== object && (typeof(object) !== typeof(target))) {
        return true;
    }
    const keys: string[] = Object.keys(object);
    const targetKeys: string[] = Object.keys(target);
    return !keys.every(x => targetKeys.indexOf(x) >= 0);
}
用法:

hasNull(args, new CreateLobbyParameter());

不太清楚您想做什么,您想键入一个以
any
为参数的函数吗?
GameMode
是枚举还是其他类?您可能应该为
args
定义一个接口,而不是将其键入
any
。GameMode是一个枚举。Johnny,但它的属性是灵活的,它们会随着位置的不同而变化。我已启用了
nomplicitany
选项,但让我尝试调整代码。当我向它们提供
任何类型的
时,这就解决了,谢谢您的帮助。乐于助人:)