Search code examples
javascripttypescriptcastingtypeoftype-assertion

TypeScript - Check if given 'any' parameter is custom type?


I have a function template like this:

function (..., args: any) {...}

And I have a class called CreateLobbyParameter :

export class CreateLobbyParameter {
    userId: number;
    gameMode: GameMode;
}

If given any typed args parameter is not similar to CreateLobbyParameter (e.g. {userId: 0, gameMode: 0}, but not {userId:0}); I wanna handle that situation.

I've tried typeof(arg as CreateLobbyParameter), but it returns the string "object" for the parameter {userId: 0, gameMode: 0}, and not CreateLobbyParameter.

Also, arg instanceof CreateLobbyParameter returns false.


Solution

  • Treat it like JavaScript.

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

    Then you have a real CreateLobbyParameter object to work with, or you can do whatever with a non-conforming argument.