对象和原始值之间的类型断言失败
Type Assertion failing between Object and primitive value
我创建了这个界面。
interface Option {
value: string|number;
label: string|number;
}
我打算创建一个名为 options 的变量,它允许 "Option" 数组或单个值(如字符串)。
我对给变量赋值没有任何问题。
const options: Array<Option|string> = [{value: 'a', label: 'A'}];
但是当我尝试使用该变量时,出现以下错误:
const singleOption = options[0].value;
Property 'value' does not exist on type 'string | Option'. Property 'value' does not exist on type 'string'
我尝试验证值是对象还是字符串。
const singleOption = typeof options[0] !== 'string' ? options[0].value : options[0];
还有类型断言,但我仍然遇到同样的错误。
const singleOption = (<Option>options[0]).value ? options[0].value : options[0];
我做了一些研究,但没有找到针对这种情况的解决方案或解决方法。
不幸的是,控制流不适用于这样的数组访问。如果您先将选项分配给变量,它将起作用:
const option = options[0]
const singleOption = typeof option !== 'string' ? option.value : option;
我创建了这个界面。
interface Option {
value: string|number;
label: string|number;
}
我打算创建一个名为 options 的变量,它允许 "Option" 数组或单个值(如字符串)。
我对给变量赋值没有任何问题。
const options: Array<Option|string> = [{value: 'a', label: 'A'}];
但是当我尝试使用该变量时,出现以下错误:
const singleOption = options[0].value;
Property 'value' does not exist on type 'string | Option'. Property 'value' does not exist on type 'string'
我尝试验证值是对象还是字符串。
const singleOption = typeof options[0] !== 'string' ? options[0].value : options[0];
还有类型断言,但我仍然遇到同样的错误。
const singleOption = (<Option>options[0]).value ? options[0].value : options[0];
我做了一些研究,但没有找到针对这种情况的解决方案或解决方法。
不幸的是,控制流不适用于这样的数组访问。如果您先将选项分配给变量,它将起作用:
const option = options[0]
const singleOption = typeof option !== 'string' ? option.value : option;