Typescript-从对象推断类型/验证对象是否存在该类型的所有键

时间:2020-05-10 16:48:24

标签: typescript

Am试图推断传入的对象的类型,并以此为基础进行一些逻辑处理。但是我无法传递传入的对象的type。(换句话说,如果对象包含它们所有类型的键)。

这是我到目前为止尝试过的方法。请有人帮我推断类型。

在最坏的情况下,我将需要与每个类型方法一起编写帮助程序,以验证该类型所施加的密钥的存在。

例如:

type A = {
  a: string;
};
type P = {
  a: string;
  c: string;
}

type C = {
  c: string;
}
const unknownVariable1 = { a: "a" };
const unknownVariable2 = { a: "a", c : "c" };

const isTypeP = (x: any): x is P => true;  //Doesn't work
const isTypeC = (x: any): boolean => { return x.c ? true: false; }. //Its okay to return true for object of type P.
// const isTypeP = (x: any): boolean => { return x.c && x.a ? true: false; } //Not a good idea, coz the type is huge list.

console.log(`isTypeP : ${isTypeP(unknownVariable1)}`);
console.log(`isTypeC : ${isTypeC(unknownVariable2)}`);
console.log(`${typeof unknownVariable1}`)
console.log(`${ unknownVariable1 as A}.`)

0 个答案:

没有答案