即使在他的伟大著作TypeScript Deep Dive 中对类型断言进行了basarat解释:
基本上,如果是 的子类型或的子类型,则从 type
S到的断言T成功。STTS
我想知道 type annotationvariable: type和 type assertion之间的确切区别是什么expression as type,更准确地说,当类型断言是否有效时,尤其是关于 TypeScript 错误有时令人惊讶:请参阅下面的foo3和foo5变量:
interface Foo {
n?: number;
s: string;
}
const foo1 = {} as Foo; // ok
const foo2 = { n: 1 } as Foo; // ok
const foo3 = { n: '' } as Foo; // KO: "Property 's' is missing..."
const …Run Code Online (Sandbox Code Playgroud) 在 Angular 组件的 HTML 部分,我想在不同条件下显示复选框或图标。使用宽松模型{ checked?: boolean; icon?: string },我可以这样做:
<input type="checkbox" [(ngModel)]="item.checked" *ngIf="!item.icon">
<i class="{{item.icon}}" *ngIf="item.icon">
Run Code Online (Sandbox Code Playgroud)
此模型启用无效状态,例如同时具有checked和icon。拥有更强大的模型可以依赖于联合类型:{ checked: boolean } | { icon: string }. 但它在 HTML 中不再起作用,因为在“联合类型”级别checked也不icon可用,而只能在左或右情况下使用。
有没有办法在一些经过调整的 HTML 模板中使用这个模型?