首页 > 解决方案 > 为什么布尔值不被视为有效的输出类型?

问题描述

我有一个布尔值调用isAcceptedOffer,如果它是真的,该类.d-inline将被添加到我的组件中的跨度。html

<span class="badge badge-pill badge-success text-white d-none" [class.d-inline]="isAcceptedOffer">Accepted</span>

布尔值仅在 message.type === 3 时才为真。因此,我在 component.ts 中创建了以下内容,但它不起作用

isAcceptedOffer(thread: Thread): boolean {
    const message = thread.messages.slice().reverse().find(m => m.type !== 0);
    if (message.type === 3) {
        this.isAcceptedOffer = true;
    } else {
        this.isAcceptedOffer = false;
    }
}

我可以看到突出显示的错误Type 'boolean' is not assignable to type '(thread: Thread) => boolean'.ts(2322)但是我需要一个布尔类型,那么我该如何解决这个问题?

标签: angulartypescript

解决方案


在您的代码段中,您试图将您的函数重新分配isAcceptedOffer给一个布尔值,然后预期会抛出一个类型错误。

您可以尝试将您的isAcceptedOffer函数重命名为类似的名称,例如evaluateOfferState这将为您提供以下代码段:

evaluateOfferState(thread: Thread): boolean {
    const message = thread.messages.slice().reverse().find(m => m.type !== 0);
    if (message.type === 3) {
        this.isAcceptedOffer = true;
    } else {
        this.isAcceptedOffer = false;
    }
}

推荐阅读