Сначала исправьте аннотации типа вашего кода.Вы полностью побеждаете смысл TypeScript, подавляя ошибки, которые существует в языке, чтобы их уловить, указав пустые типы вместо использования логического вывода.Это не Java.
async GetSharePointData() { // return type is inferred as `Promise<string>`
const result = await sp.web.lists // the `any` you had here was worse than useless.
.getByTitle('Emails')
.items
.select('EmailAddress')
.getById(99)
.get();
const emailAddress= result.emailAddress;
console.log(emailAddress);
return emailAddress;
}
Теперь о асинхронных функциях и обещаниях.Функция или метод async
всегда возвращает обещание.Присвоение результата вызова такой функции непосредственно свойству или переменной всегда приведет к описанному вами поведению
GetSharePointData().toString() === "[object Promise]"
Правильный подход к установке свойства emailAddressGetter
(Кстати, это ужасное имя для этого свойствав любом случае) на адрес электронной почты, с которым обещание в конечном итоге разрешается, зависит от контекста, но вот что вы можете сделать.
constructor() {
this.emailAddressPromise = this.GetSharePointData();
this.emailAddressPromise.then(emailAddress => this.emailAddress = emailAddress);
}
Но это может быть ужасно и излишне непредсказуемо в зависимости от того, что вы пытаетесьделать.