有没有办法区分`{x ?: boolean}`和`{x:boolean | undefined}`?

时间:2019-03-29 10:13:04

标签: typescript

这同时适用于aGoodaBad

type AOptional = {x?: boolean};
const aBad: AOptional = { x: undefined };
const aGood: AOptional = { };

我不希望它起作用。我只希望aGood通过类型检查。 有没有办法强制执行AOptional

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以区分{ x: boolean | undefined }{ x?: boolean }{ x: boolean | undefined }可分配给{ x?: boolean },但不能相反。

但是在任何编译器设置下,类型为{ x: undefined }的对象文字都可以分配给{x?: boolean }