Задать вопрос
@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. Насколько это решение корректно?
  • Вопрос задан
  • 130 просмотров
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 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)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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