TypeScript 如何访问 promise 方法中的字段

TypeScript How to access field in promise method

我正在尝试访问 promise 方法中的字段。

代码如下:

// Import stylesheets
import './style.css';
export class User{
  
  firstName:string;
  lastName:string;
  constructor(){
    this.firstName = "Tom";
    this.lastName = "Jack";
    this.getName = this.getName.bind(this);
  } 
  getName():Promise<string>{
    return new Promise((resolve,reject) =>{
      return resolve(`My Name is ${this.firstName} ${this.lastName}`);
    }) ;
  }
}

export class UserApi{
  userName:string;
  getUserName():string{
    let user = new User();
    user.getName().then(name => {
      return name;
    });
    return '';
  }
  
}
// Write TypeScript code!
const appDiv: HTMLElement = document.getElementById('app');
appDiv.innerHTML = `<h1>TypeScript Starter</h1>`;
let user = new UserApi();
appDiv.append('This is ' + user.getUserName());

user.getUserName() return空了。

如何从 promise 方法中获取预期的字符串?

换句话说,如何在Promise方法中访问this

更新:

我对 Promise 的 return 值没有问题,请注意如何访问 class 属性 或 [=30= 的值] 方法是 return Promise.

您应该 return 来自 getUserName 方法的承诺。像这样:

getUserName(){
    let user = new User();
    return user.getName().then(name => {
        return name;
    });
}

如果你只是想return上面的名字,你不需要“then”:

return user.getName();

当您使用 getUserName 方法时,您需要处理 promise。像这样:

let user = new UserApi();
user.getUserName().then((name) => {
    appDiv.append('This is ' + name);
});