我很困惑为什么下面的代码会在IDE中出现错误:
我有一些接口/类型
接口/类型:
interface GradientColor {
type: string;
value: {
angle: string | number;
colours: string[];
};
}
interface NormalColor {
type: string;
value: string;
}
type ColorOptions = GradientColor | NormalColor;
(mix英国和美国的拼写)
用法:
所以我现在要在函数中使用它们
const parseCSSColor = (color: ColorOptions) => {
// ...
return `linear-gradient(${color.value.angle}deg, ${color.value.colors[0]}, ${color.value.colors[1]})`;
// ...
}
发行日期:
现在一切都设置好了,我的IDE显示:
Property 'angle' does not exist on type 'string | { angle: string | number; colours: string[]; }'.
Property 'angle' does not exist on type 'string'.
为什么?color.value
应该可以是字符串或具有.angle
和.colours
的对象
1条答案
按热度按时间vyu0f0g11#
您可以尝试缩小
color
的类型范围,让Typescript知道它是GradientColor
还是NormalColor
。如果
colours: string[]
的长度至少为2,您还需要签入else子句;如果您希望访问前两个元素而不出现Typescript错误,则需要将其类型更改为元组。