Javascript 如何扩展qix颜色库以添加自定义操纵函数?

Javascript 如何扩展qix颜色库以添加自定义操纵函数?,javascript,reactjs,colors,module,extends,Javascript,Reactjs,Colors,Module,Extends,我正在使用,希望能够定义一些特定的自定义操作函数,以便在主题中使用 我在做这样的事情: import Color from 'color'; const primary = Color.rgb(34, 150, 168); const getUltraLight = (color: Color): Color => { return color.mix(Color('white'), 0.9); }; const getDark = (color: Color): Color =

我正在使用,希望能够定义一些特定的自定义操作函数,以便在主题中使用

我在做这样的事情:

import Color from 'color';

const primary = Color.rgb(34, 150, 168);

const getUltraLight = (color: Color): Color => {
  return color.mix(Color('white'), 0.9);
};

const getDark = (color: Color): Color => {
  return color.darken(0.3);
};
我可以这样做以获得我想要的深色的十六进制值:

const primaryDarkHex = getDark(primary).hex()
但我希望能给你打个电话

primary.dark().hex()
因此,当我将颜色对象作为道具传递给react组件时,我可以使用它

我需要做什么来扩展这个导入的模块


您可以进行本地编辑,但如果重新安装依赖项,这些编辑都将被覆盖。我会先在Github上分叉项目,然后进行必要的编辑,或者直接从中作为依赖项安装它。

我通过导入库、添加原型函数和重新导出实现了这种工作:

import Color from 'color';

type ColorExt = Color & {
  dark: () => ColorExt;
};

Color.prototype.dark = function(): ColorExt {
  return this.darken(0.3) as ColorExt;
};

export default Color;
然后在另一个文件中,我可以做:

import MyColor from 'MyColor'
console.log('Dark Test : ', MyColor.rgb(34, 150, 168).dark().hex())
// Output -> Dark Test :  #186976
唯一的问题是我不确定如何在typescript中处理这个问题。调用
dark()
时出现此错误:

类型“Color”上不存在属性“dark”。


有什么想法吗?

我希望我能做一些类似的事情:
类MyColor扩展颜色{…}
。我可以在库导入中使用类似的东西吗?理论上,通过导入
Color
并使用
Color.prototype.dark=function(){…}
,可以扩展此库导出的对象的原型。这可能适用于简单的功能,但听起来你并没有做出重大改变。您只需确保不需要任何未从库中导出的帮助器功能。谢谢。我刚试过,效果不错
Color.prototype.dark=function(){return this.darken(0.3)}
可以这样调用:
const darkHex=Color.rgb(34150168).dark().hex()
。但是我如何在我所有的react组件中都可以访问它,在这些组件中我将一个颜色对象作为道具传递给它?您可以创建一个文件,在其中导入
Color
,修改原型,然后再次导出,从该文件而不是需要的任何组件的库中导入对象,然后在任何值(包括道具)上使用它。编辑:误解,此解决方案应该有效