首页 > 解决方案 > 带有 Object 的声明类型原语会导致错误

问题描述

代码:

export type TestType =
  | string
  | number
  | { value?: string, label?: string }
  | { num1: number, num2: number }
  | null;

const data: TestType;
data?.value // error;

错误:

Property 'value' does not exist on type 'TestType'.
  Property 'value' does not exist on type 'string'

如果:

const data: TestType = { num1: 10, num2: 20 };
console.log(data.num1); 

但问题是:这种类型在对象数组中使用,它可以是运行时描述的类型之一

标签: typescript

解决方案


所以解决方法是使用as

type ObjectType = {
  value: string,
  label: string
};

export type TestType =
  | string
  | number
  | ObjectType
  | null;

const data: TestType;

(data as ObjectType)?.value; // works


推荐阅读