我现在的问题是类型定义之前的感叹号是否与普通上下文中的含义完全相同。
undefined
!
在名称之后,如果不立即初始化,TypeScript将忽略此项,并且不会显示错误:
class Foo {
foo: string; // error: Property 'foo' has no initializer and is not definitely assigned in the constructor.
bar!: string; // no error
}
同样的事情实际上也适用于局部变量:
let foo: string;
let bar!: string;
console.log(foo); // error: Variable 'foo' is used before being assigned.
console.log(bar); // no error
Playground