您如何打字给出诺言的结果


const counterAccount = this.accountsService.getFirestoreLinked('mas-accounts', this.selectedRelations[idx].accountId);
    counterAccount.then(result => {
        const state = result.mas.accountSettings.status;
    });

我需要将变量state的值设置为承诺中元素的值。错误消息是"属性MAS在类型上不存在。"

您不必在 counteraccount 上声明类型。您可以在上声明类型>结果

例如:

// result.ts
export interface IResult {
 address: IAddress;
 birthdays: { text: string};
 mas: IMas;
}
interface IMas {
 accountSetting: {
 billing: boolean;
 gender: string;
 member: boolean;
 status: string;
}
}

现在声明结果的类型

const counterAccount = this.accountsService.getFirestoreLinked('mas-accounts', this.selectedRelations[idx].accountId);
    counterAccount.then((result: IResult) => {
        console.log(result);
    });

至于您的tslint对使用结果['mas']不满意,这是因为在tslint.ts或tsconfig.ts中有一个特定的规则(我不记得是哪一个)。您可以从配置中删除该规则,但我建议不要这样做,因为它存在于该项目中的特定标准。

最新更新