Почему я не могу получить доступ к свойству объекта, используя другой тип, который вычисляется до той же строки?

#javascript #typescript

#javascript #typescript

Вопрос:

ResourceType — это объект, свойства которого являются значениями nodeType.

ResourceType.engine === nodeType.engine === «движок».

Почему я не могу использовать значение nodeType для доступа к значению объекта, которое определяется значением ResourceType, когда они оба вычисляют одну и ту же строку?

 export declare enum NodeType {
    engine = "engine",
    agent = "agent",
    api = "api",
    pluginBuilder = "plugin-builder"
}

export class ResourceType {
  public static agent: NodeType.agent;
  public static engine: NodeType.engine;
}   

export class ResourceQuotaException extends HttpMetaException {
  constructor(resourceType: NodeType) {
    // Error message gets passed as first parameter
    super(ResourceQuotaException.MESSAGES[resourceType], HttpStatus.BAD_REQUEST);
  }
  public static readonly MESSAGES = {
    [ResourceType.agent]: 'Agent Limit Reached',
    [ResourceType.engine]: 'Engine Limit Reached'
  };
}
  
  throw new ResourceQuotaException(NodeType.engine); // Message is undefined
  

Ответ №1:

Это была ошибка с моей стороны.

Вместо

 export class ResourceType {
  public static agent: NodeType.agent;
  public static engine: NodeType.engine;
}  
  

это должно быть

 export class ResourceType {
  public static agent = NodeType.agent;
  public static engine = NodeType.engine;
}