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

我有一个函数模板是这样的:TypeScript - 检查给定'任何'参数是否为自定义类型?

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

而且我有一类叫做CreateLobbyParameter

export class CreateLobbyParameter { 

userId: number;

gameMode: GameMode;

}

如果给any类型参数args不是类似于CreateLobbyParameter(如{userId: 0, gameMode: 0},但不{userId:0} );我想要处理这种情况。

我试过typeof(arg as CreateLobbyParameter),但它返回字符串"object"的参数{userId: 0, gameMode: 0},而不是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()); 

以上是 TypeScript - 检查给定'任何'参数是否为自定义类型? 的全部内容, 来源链接: utcz.com/qa/266171.html

回到顶部