该代码如何编译,它应该在第一个if之后抛出类型失败
class Optional<T> {}
class Some<T> extends Optional<T> {
constructor(public t: T) {
super()
}
}
function div(n: number, d: number): Optional<number> {
if (d === 0.0) {
return "IMPOSSIBLE"
}
return new Some(d / n)
}
console.log(div(1, 0))
答案 0 :(得分:2)
因为TypeScript具有structual type system,这意味着它不是根据名称而是根据其属性来判断类型兼容性,因此,空类实际上是any
,而对于诸如null
或{{ 1}},因为它不需要属性