gpt4 book ai didi

object - TypeScript 扩展模块中的对象

转载 作者:搜寻专家 更新时间:2023-10-30 21:13:17 25 4
gpt4 key购买 nike

我想做的真的很像thisthis除了我想弄清楚如何将 ArrayExtension 放入模块中。

我正在尝试获得类似于 C# 扩展方法工作方式的东西,这样我就可以只导入模块,我将拥有我的额外方法。我提供的链接显示了如何扩展现有对象,但我一直无法弄清楚如何将其封装到模块中。

最佳答案

如果您的目标是像 node.js 这样的非浏览器环境,这将是可能的,因为您将能够将对模块的全局成员(例如 Array)的引用传递给其他模块。然后那些其他模块可以使用额外的功能扩展传入的对象和/或其原型(prototype),这些功能只能由调用模块访问。其他模块必须做同样的事情才能获得这些扩展;因此,由于导入是显式的,所以冲突被最小化了。

但是,在浏览器环境中情况并非如此,因为只有一个 window 对象,并且对其成员的任何更改都随处可用。一旦您的任何模块扩展了 Array,这些扩展将可用于所有其他模块——增加了冲突的可能性并使代码更难推理。

话虽如此,JS 和 TypeScript 中都有模式,它们应该可以完成您想要的。一种这样的模式是“mixin”模式,它允许您在对象实例 的基础上添加额外的功能。您可以将可重用代码分离到 mixin 模块中,然后可以在需要时将其应用于对象,甚至可以在构造函数中自动应用。看看这个以获得体面的概述和实现示例:http://javascriptweblog.wordpress.com/2011/05/31/a-fresh-look-at-javascript-mixins/

关于object - TypeScript 扩展模块中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com