在 TypeScript 中,如果启用了严格的 null 检查,我希望编译器会阻止我为变量赋值null
或赋值,除非它承认.undefined
null
但是,数组访问似乎允许绕过此检查。
例子:
let a: string[] = ["Hello"];
let s: string;
// 1) this produces an error, as expected
s = undefined
// 2) s is undefined here, too, but no error
s = a[3];
console.log(s);
TypeScript Playground 上的可运行版本(注意:必须在“选项”对话框中启用“严格空值检查”)。
这里发生了什么?
- 这是 TypeScript 编译器中的错误吗?
- 还是故意遗漏?
- 如果是后者,这是否记录在任何地方(最好有理由说明为什么这样做)?