Typescript 将特定函数转换为可重用函数强类型脚本

Typescript 将特定函数转换为可重用函数强类型脚本,typescript,Typescript,我有一段代码绑定到一个特定的接口。该函数仅接受此特定接口的数据并返回输出。但是,我希望使此函数可重用,以便它仅依赖于“y”的值,并基于“y”的值向对象添加“color”属性 代码如下: 接口数据{ 名称:字符串; y?:数字; isSum?:布尔型; } 接口IColorChartByValue扩展IChartData{ 颜色:字符串; } 常量colorChartByValue=( 数据:IChartData[] ):IColorChartByValue[]=>{ 返回data.map((项

我有一段代码绑定到一个特定的接口。该函数仅接受此特定接口的数据并返回输出。但是,我希望使此函数可重用,以便它仅依赖于“y”的值,并基于“y”的值向对象添加“color”属性

代码如下:

接口数据{
名称:字符串;
y?:数字;
isSum?:布尔型;
}
接口IColorChartByValue扩展IChartData{
颜色:字符串;
}
常量colorChartByValue=(
数据:IChartData[]
):IColorChartByValue[]=>{
返回data.map((项目:IChartData,索引:number,数组:IChartData[])=>{
if(index==0 | | index==array.length-1){
返回{…项,
颜色:“#137cbd”
}
}
if((项.y作为编号)>=0&&index!==0&&index!==array.length-1){
返回{…项,
颜色:“#0F9960”
}
}
if((项.y作为编号)<0&&index!==0&&index!==array.length-1){
返回{…项,
颜色:“#D9822B”
}
}
返回{…项,
颜色:“defaultColor”
}
});
};
常量图表数据:IChartData[]=[{
名称:'基本案例',
y:100000,
},
{
名称:“瀑布1”,
y:11500,
},
{
名称:“瀑布2”,
y:5677,
},
{
名称:“瀑布3”,
y:-3001,
},
{
名称:“瀑布4”,
y:6500,
},
{
名称:'上',
伊瑟姆:没错,
},
]

console.log(colorChartByValue(chartData))
我猜您正在寻找类似的内容:

函数colorChartByValue(数据:T[]):(T&{color:string})[]{ 返回data.map((项目、索引、数组)=>{ //代码省略 }); };
您可以通过向
IColorChartByValue
colorChartByValue
添加一些泛型来轻松实现这一点:

类型IColorChartByValue=T&{
颜色:字符串;
};
常量colorChartByValue=(
数据:T[]
):IColorChartByValue[]=>{
返回data.map((项目、索引、数组)=>{
if(index==0 | | index==array.length-1){
返回{…项,
颜色:“#137cbd”
}
}
if((项.y作为编号)>=0&&index!==0&&index!==array.length-1){
返回{…项,
颜色:“#0F9960”
}
}
if((项.y作为编号)<0&&index!==0&&index!==array.length-1){
返回{…项,
颜色:“#D9822B”
}
}
返回{…项,
颜色:“defaultColor”
}
});
};

谢谢。但是我根本不想引用IChartData。但是您需要检查
y
参数。它应该来自哪里?来自输入。输入应该是一个数组,它肯定应该有一个键“y”。不需要关心其他属性