【问题标题】:Type Assertion failing between Object and primitive value对象和原始值之间的类型断言失败
【发布时间】:2019-08-13 22:41:40
【问题描述】:

我已经创建了这个界面。

interface Option {
  value: string|number;
  label: string|number;
}

我打算创建一个名为 options 的变量,它允许“选项”数组或单个值(如字符串)。

我没有任何问题给变量赋值。

const options: Array<Option|string> = [{value: 'a', label: 'A'}];

但是当我尝试使用该变量时,我收到以下错误:

const singleOption = options[0].value;

类型“字符串”上不存在属性“值”|选项'。 “字符串”类型上不存在属性“值”

我尝试验证该值是对象还是字符串。

const singleOption = typeof options[0] !== 'string' ? options[0].value : options[0];

还有类型断言,但我仍然遇到同样的错误。

 const singleOption = (<Option>options[0]).value ? options[0].value : options[0];

我做了一些研究,但没有找到适合这种情况的解决方案或解决方法。

【问题讨论】:

    标签: angular typescript type-assertion


    【解决方案1】:

    不幸的是,控制流不适用于这样的数组访问。如果您先将选项分配给变量,它将起作用:

    const option = options[0]
    const singleOption = typeof option !== 'string' ? option.value : option;
    

    【讨论】:

      猜你喜欢
      • 2017-07-16
      • 2021-10-27
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 2023-02-22
      • 2018-06-02
      • 2016-04-26
      • 1970-01-01
      相关资源
      最近更新 更多