首页 > 解决方案 > 如果在创建变量期间设置联合的具体元素,则变量联合类型被忽略

问题描述

在写测试期间,我意外地为我捕获了类型错误。如果您能解释一下我在类型工作中的误解,我将不胜感激。

我为变量设置了具体的联合类型,类型可以为空,并设置初始值 - null,但之后我无法访问另一个联合元素

type DataType = { id: string } | null;
let data : DataType = null;

data?.id;

data?.id 显示为错误,打字稿认为哪些数据的类型为 null 而不是 DataType

对于数据确实为空的这种简单情况,这不是问题,但是会显示此错误,对于下一种情况

type DataType = { id: string } | null;
let data : DataType = null;

const fn = () => {
  data = { id : 'test' }
}
fn();

data?.id

在这种情况下,数据已经等于 { id: 'test' }

如果修复了所有这些错误

let data: DataType = null as DataType;

但我不想使用运算符as

标签: typescript

解决方案


推荐阅读