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
,修改原型,然后再次导出,从该文件而不是需要的任何组件的库中导入对象,然后在任何值(包括道具)上使用它。编辑:误解,此解决方案应该有效