Typescript 为什么还要编译?
上面的代码编译(出于某种原因)并生成Typescript 为什么还要编译?,typescript,typechecking,Typescript,Typechecking,上面的代码编译(出于某种原因)并生成false 请向我解释为什么TypeScript在这种情况下不强制执行类型正确性 为未来读者编辑: Murat K的回答是正确的,但我想为您节省一次点击和15分钟的时间: TypeScript的类型系统是结构化的 123被视为Number类型的对象 从结构上讲,Number是与X兼容的子类型,因为它具有X等的所有方法和字段 空类基本上是一个空对象,因为它没有任何东西可以归类为某物。这就是为什么你可以给它分配任何东西 有关相同的问题,请参阅github问题 c
false
请向我解释为什么TypeScript在这种情况下不强制执行类型正确性
为未来读者编辑:
Murat K的回答是正确的,但我想为您节省一次点击和15分钟的时间:
- TypeScript的类型系统是结构化的
被视为123
类型的对象Number
- 从结构上讲,
是与Number
兼容的子类型,因为它具有X
等的所有方法和字段X
- 空类基本上是一个空对象,因为它没有任何东西可以归类为某物。这就是为什么你可以给它分配任何东西
有关相同的问题,请参阅github问题
class X {}
let x : X = 123 // why is this ok?
console.log(x instanceof X)