typescript - 如何检查对象是否是打字稿中的自定义类型?
问题描述
我到处寻找,找不到任何方法来检查给定对象是否属于某种自定义类型。例如,我这样声明 Human 类型:
type A = { name: string; age: number; }
然后我想要一个函数来接收一个对象并决定它是否是人类类型。就像是:
isOfTypeHuman = (input) => typeof input === Human
我有一种感觉,这是不可能的,但我想也许我错过了一些东西。有任何想法吗?
解决方案
类型在运行时不存在。它们仅在编译时有用,然后被剥离。
您需要检查自己:
// 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