为什么这甚至可以编译?

Why does this even compile?

class X {}
let x : X = 123 // why is this ok?
console.log(x instanceof X)

以上代码编译(出于某种原因)并产生 false

请向我解释为什么 TypeScript 在这种情况下不强制类型正确性。

为未来的读者编辑:

Murat K 的回答是正确的,但我想为您节省一次点击和 15 分钟的时间:

空 class 基本上是一个空对象,因为它没有任何可 class 证明的东西。这就是为什么你可以给它分配任何东西。

同一问题请参见 github 问题 here