Задать вопрос
@timokins

Как проверить наличие метода в классе?

Вопрос по Typescript.

Имеется такой пример:

interface SA {
    read: () => void;
    close?: () => void;
}

class S implements SA {
    read() {
        console.log("read");
    }
}


Как правильно проверить, что у экземпляра класса S отсутствует метод close()?

Вот такой вариант решения есть у меня:

let s = new S();

if (typeof (s as any).close === "function") {
    (s as any).close();
} else {
    console.log("oops");
}


Он работает, но работает только лишь из-за as any. Насколько это решение корректно?
  • Вопрос задан
  • 131 просмотр
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Курс по TypeScript
    3 месяца
    Далее
  • Merion Academy
    Онлайн-курс по TypeScript
    2 месяца
    Далее
  • Stepik
    TypeScript с 0 до ПРО | Решение задач по TS, разбор сложных тем
    1 неделя
    Далее
Решения вопроса 1
EreminD
@EreminD
Кое-что умею
interface SA {
    read: () => void;
    close?: () => void;
}

class S implements SA {
    read() {
        console.log("read");
    }
}

let s: SA = new S();

console.log(s.close === undefined)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы