Как я могу проверить тип результата - PullRequest
0 голосов
/ 08 июля 2020

У меня очень простой тип интерфейса:

export interface Amount {
    totalAmount: number;
}

И в моем модульном тесте я хочу проверить, что объект, возвращаемый из вызова API, относится к этому типу, но я совершенно уверен, как сделать это. Мой вызов API выглядит следующим образом:

const expectedResponse = {
    totalAmount: 5000
};

amountDataService
    .getAmountData(params)
    .subscribe(
        result => {
            expect(result instanceof Amount).toBe(true);
            expect(result).toEqual(expectedResponse);
        },
        error => {
            fail('Data was not returned successfully.');
        }
    );

Однако строка expect(result instanceof Amount).toBe(true); отображает ошибку с сообщением:

'Amount' only refers to a type, but is being used as a value here

Как я могу проверить тип возвращаемого объекта?

1 Ответ

1 голос
/ 08 июля 2020

Дублирование { ссылка }

Невозможно проверить интерфейс во время выполнения, поскольку информация о типе никоим образом не транслируется в скомпилированный код JavaScript.

Вы можете проверить указанное свойство c или метод и решить, что делать.

module MyModule {
  export interface IMyInterface {
      name: string;
      age: number;
  }
  export interface IMyInterfaceA extends IMyInterface {
      isWindowsUser: boolean;
  }
  export interface IMyInterfaceB extends IMyInterface {

  }

  export function doSomething(myValue: IMyInterface){
    // check for property
    if (myValue.hasOwnProperty('isWindowsUser')) {
      // do something cool
    }
  }
}
...