【发布时间】:2022-01-16 08:49:04
【问题描述】:
我希望能够将数组传播到函数的参数中, 但我得到了一个扩展参数必须具有元组类型或传递给休息参数.ts(2556)
const currentColor: string = context.brandingPersonal.customColor; // rgba string
const numberColor: [number, number, number, number] = currentColor
.substring(5, currentColor.length - 1)
.replace(/ /g, '')
.split(',')
.map((item) => Number(item));
function getContrastColor(R: number, G: number, B: number, A?: number) {
const brightness = R * 0.299 + G * 0.587 + B * 0.114 + (1 - A || 0) * 255;
return brightness > 186 ? '#000000' : '#FFFFFF';
}
getContrastColor(...numberColor);
【问题讨论】:
-
TS 不知道
numberColor的类型是“元组”(TS 中的固定大小数组),因为元组需要定义为 const。在[255,50,50,0.1]之后添加as const以将类型从Array缩小到[Number, Number, Number, Number] -
问题是函数有固定数量的参数,数组没有。你可以把它变成一个元组,使数组成为常量,或者使用
rest(IMO 可能不会)。在网上搜索错误消息也可能提供其他选项。 -
@HKG 如果值为 rgb only 如何设置参数中的最后一个参数可选?
-
只需
A?: number -
@HKG 我会更新我的代码来告诉你发生了什么
标签: typescript