как определить функцию в объекте, который вы создаете в typescript

#typescript #object

Вопрос:

Я написал следующий объект в машинописном виде, который мне нужен для заглушки в модульном тестировании (я знаю, что определения значений/функций не имеют смысла, но это просто заглушка):

     const obj = {
      isEmpty: true,
      testName: 'unitTest',
      getTime: () => 5,
      success: () => {},
      fail: () => {},
      wait: () => {},
    };
 

getTime , success , fail и wait должны быть функциями, но когда я навожу на них курсор в VSCode, они задаются как свойства (например isEmpty , и testName ). Могу ли я каким-либо образом сделать так, чтобы они были строго признаны функциями? (это важно позже в модульном тесте)

Комментарии:

1. Что вы подразумеваете под «данными как свойствами»? Это свойства. (Типов функций.) Можете ли вы подробнее рассказать о том, как используется этот код и каким конкретно образом он работает не так, как ожидалось?

Ответ №1:

Вы можете определить тип для obj следующим образом. Теперь ваш редактор должен распознать его как функции.

 type objType = {
  isEmpty: boolean;
  testName: string;
  getTime(): number;
  success(): void;
  fail(): void;
  wait(): void;
};

const obj: objType = {
  isEmpty: true,
  testName: "unitTest",
  getTime: () => 5,
  success: () => {},
  fail: () => {},
  wait: () => {},
};
 

пример

Пример в машинописной игровой площадке

Комментарии:

1. В VSCode они по-прежнему отображаются как свойства

2. @SaboBoz Извините, я использовал неправильный синтаксис . Я обновил свой ответ, чтобы отразить правильный синтаксис. Я также добавил скриншот кода в VSCode, и теперь он правильно отображает «метод» вместо «свойство».