如何检查对象的接口类型?

问题描述 投票:0回答:1

[我试图基于两种类型来评估对象,而没有明确地查看其子对象,因为值不存在(基于我的用例)。

假设我有两个具有不同属性的接口。

[interface Ainterface B] >>

我将如何检查对象是A型还是B型?

我尝试了以下操作:

interface A {
  foo: "value";
}

interface B {
  bar: "value";
}

const object = {
  bar: "value"
};

function isA(object: any): object is A {
  if (object as A) {
    return true;
  } else {
    return false;
  }
}

console.log(isA(object));

但是,结果总是返回为True

Codesandbox

https://codesandbox.io/s/elastic-gagarin-01c7y?file=/src/index.ts:0-243

我试图基于两种类型来评估对象,而无需明确地查看其子对象,因为值不存在(基于我的用例)。假设我有两个接口,它们具有不同的...

javascript typescript
1个回答
0
投票
interface A {
  foo: "value";
}

interface B {
  bar: "value";
}

const object = {
  bar: "value"
};

function instanceOfA(object: any): object is A {
    return 'foo' in object;
}

function isA(obj: any): boolean {
  if (instanceOfA(obj)) {
    return true;
  } else {
    return false;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.