@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. Насколько это решение корректно?
  • Вопрос задан
  • 44 просмотра
Решения вопроса 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)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы