简体   繁体   English

TypeScript - 检查给定的'any'参数是否为自定义类型?

[英]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 : 我有一个名为CreateLobbyParameter的类:

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

If given any typed args parameter is not similar to CreateLobbyParameter (eg {userId: 0, gameMode: 0} , but not {userId:0} ); 如果给定any类型化的args参数与CreateLobbyParameter不相似(例如{userId: 0, gameMode: 0} ,而不是{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. 我尝试过typeof(arg as CreateLobbyParameter) ,但它返回参数{userId: 0, gameMode: 0}的字符串"object" ,而不是CreateLobbyParameter.

Also, arg instanceof CreateLobbyParameter returns false. 此外, arg instanceof CreateLobbyParameter返回false。

Treat it like JavaScript. 像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. 然后你有一个真正的CreateLobbyParameter对象可以使用,或者你可以用不符合的参数做任何事情。

I actually found another way: 我其实找到了另一种方式:

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);
}

Usage: 用法:

hasNull(args, new CreateLobbyParameter());

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 TypeScript function 检查类型是否不可分配给自定义类型 - TypeScript function to check if type is not assignable to custom type RN打字稿中参数隐式具有任何类型 - Parameter implicitly has any type in RN typescript Typescript:带有自定义参数的字符串文字类型` - Typescript: String literal type with custom parameter` 如何在 Typescript 中检查自定义接口类型 - How to check custom interface type in Typescript typescript:类型'any []'的参数不能分配给'[]'类型的参数.ts(2345) - typescript : Argument of type 'any[]' is not assignable to parameter of type '[]'.ts(2345) React Typescript:'{ [x: number]: any; 类型的参数 }' 不可分配给类型的参数 - React Typescript: Argument of type '{ [x: number]: any; }' is not assignable to parameter of type “any”类型的参数不可分配给“never”类型的参数 typescript 解决方案 - argument of type 'any' is not assignable to parameter of type 'never' typescript solution TypeScript 错误参数“props”隐式具有“any”类型 - TypeScript error Parameter 'props' implicitly has an 'any' type 映射打字稿参数:绑定元素“列”隐式具有“任何”类型 - Map typescript parameter: Binding element 'columns' implicitly has an 'any' type Typescript JSX 与 Generics - 参数隐式具有“任何”类型 - Typescript JSX with Generics - Parameter implicitly has an 'any' type
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM