Angular 角型';字符串';不可分配给类型';布尔值';

Angular 角型';字符串';不可分配给类型';布尔值';,angular,typescript,angular-cli,Angular,Typescript,Angular Cli,角度4.3.1 角度CLI 1.2.3 打字稿2.3.4 组件类型脚本文件: public saveName: string; public overwrite: boolean; 当我运行ng build--prod时,以下标记因类型“string”不可分配给类型“boolean”而失败 <span>{{!overwrite || saveName}}</span> OR <button *ngIf="!overwrite && saveNa

角度4.3.1
角度CLI 1.2.3
打字稿2.3.4

组件类型脚本文件:

public saveName: string;
public overwrite: boolean;
当我运行
ng build--prod时,以下标记因类型“string”不可分配给类型“boolean”而失败

<span>{{!overwrite || saveName}}</span>

OR

<button *ngIf="!overwrite && saveName">Save</button>
{{!覆盖| |保存名称}
或
拯救
但是,它可以在以下情况下正常工作:

<span>{{saveName || !overwrite}}</span>
<span>{{overwrite || saveName}}</span>
<button *ngIf="saveName && !overwrite">Save</button>
<button *ngIf="overwrite && saveName">Save</button>
{{saveName | |!overwrite}
{{覆盖| |保存名称}
拯救
拯救
为什么我会犯这样的错误?
更具体地说,为什么只有在字符串前面有一个否定的布尔值时才会出现该错误?

尝试
*ngIf=“!overwrite&&!!saveName”
saveName
转换为布尔值

TypeScript给出的错误原因大致是:您使用的字符串应该使用布尔值

我认为只有在这种情况下才会发生这种情况的原因是,如果你有
true | |任何东西
只有第一个会被计算(因为如果第一个为true,那么整个表达式都会为true,不管其余的是什么)