我正在尝试检查特定的key是否仅分配了一组values。此值在Typescript中列为enum

请注意,我这样做是要像下面说明的那样直接检查values,但是要检查enum类型。


  Check if key/value is in JSON


我只需要检查json文件中使用的已知区域。

export type Regions = Na | Emea | Apac;

export interface Na {
    NA: "na";
}

export interface Emea {
    EMEA: "emea";
}

export interface Apac {
    APAC: "apac";
}


我需要编写类似于下面的函数,该函数仅对键Region的已知值进行检查

function isValidRegion(candidate: any): candidate is Regions {
 // if (candidate is one the type of Regions
 // console.log("Regions valid");
 // else
 // console.log("invalid Regions are used in input JSON");
 result = candidate;
 return result;
}

最佳答案

做这样的事情:

function isValidRegion(candidate: any): candidate is Regions {
      return Object.keys(Regions).some(region => region === candidate)
}

10-06 04:04