如果启用了TypeScript的严格空值检查,我希望编译器阻止我将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 编译器的错误吗?
- 还是故意省略了某些内容?
- 如果是后者,是否有文档记录(最好附带理由)?