Из того, что я понимаю, интерфейс, который состоит из конечных переменных и методов без реализаций, реализуется классом для получения группы методов или методов, связанных друг с другом. С другой стороны, абстрактный класс, который может содержать не конечные переменные и методы с реализациями, обычно используется в качестве руководства или как суперкласс, из которого наследуются все родственные или подобные классы. Другими словами, абстрактный класс содержит все методы / переменные, которые разделяются всеми его подклассами.
Это нормально, поскольку содержимое snapshot
DataSnapshot
соответствует следующему объекту:
{"record2":{"Temp":34}}
Вы можете проверить это, выполнив console.log(snapshot.val());
Итак, вы должны сделать что-то вроде:
.....
const value = snapshot
.child(Object.keys(snapshot.val())[0] + '/Temp')
.val();
agent.add(`The temperature right now is ${value}`);
.....