首页 > 解决方案 > 如何检查对象是否是打字稿中的自定义类型?

问题描述

我到处寻找,找不到任何方法来检查给定对象是否属于某种自定义类型。例如,我这样声明 Human 类型:

type A = { name: string; age: number; }

然后我想要一个函数来接收一个对象并决定它是否是人类类型。就像是:

isOfTypeHuman = (input) => typeof input === Human

我有一种感觉,这是不可能的,但我想也许我错过了一些东西。有任何想法吗?

标签: typescript

解决方案


类型在运行时不存在。它们仅在编译时有用,然后被剥离。

您需要检查自己:

// if it quacks like a duck..
isOfTypeHuman = (input) => input.name !== undefined && input.age !== undefined

您还可以使用用户定义的类型保护来使其余代码知道这是人类

isOfTypeHuman = (input: any): input is Human => input.name !== undefined && input.age !== undefined

推荐阅读