首页 > 解决方案 > 有没有办法区分 `{x?: boolean}` 和 `{x: boolean|undefined}`?

问题描述

这适用于aGoodaBad

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

我不想让它工作。我只想aGood通过类型检查。有没有办法以一种可以强制执行的方式定义AOptional

谢谢!

标签: typescript

解决方案


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

但是具有类型的对象文字{ x: undefined }将可以{x?: boolean }在任何编译器设置下分配。


推荐阅读