检查参数是否属于Typescript中的类型

检查参数是否属于Typescript中的类型,typescript,typechecking,Typescript,Typechecking,如何检查某个参数是否属于我在TypeScript中定义的类型? 例如: type myType = {n:number} let par = {n:3} 我想检查x是否属于mtType类型。如果我使用typeof par,它的返回值是字符串“object”。谢谢。看看这里的部分。可以使用以下语法: function isMyType(arg: any): arg is myType { // you can replace the following expression with t

如何检查某个参数是否属于我在TypeScript中定义的类型? 例如:

type myType = {n:number}
let par = {n:3}
我想检查
x
是否属于
mtType
类型。如果我使用
typeof par
,它的返回值是字符串
“object”
。谢谢。

看看这里的部分。可以使用以下语法:

function isMyType(arg: any): arg is myType {
    // you can replace the following expression with the logic 
    // that clearly defines that if an object can be myType
    return arg.n !== undefined && arg.n === parseInt(arg.n);
}
后来在代码中

if (isMyType(objectToCheck)){
   // do something with the object as myType
}

虽然副本上没有标记答案,但我坚持我的答案。它的要点是,类型被删除,检查属性是否存在以及是否为预期的类型。为什么不
typeof(arg.n)==“number”
?我不认为OP说
{n:3.14}
不是
myType
。这有道理,但问题(和答案)与对象类型检查有关,而不是字段值类型。无论如何,我将补充一条评论来澄清这一点。