【提案】支持类似kotlin的object关键词,用来解决静态方法无法被继承后重写的问题 #71
-
🔍 搜索词
⭐ 建议支持 object 关键字和 object extends。object 可以 extends object ,object 可以 extends class ,class 可以 extends object 。 📃 励志示例大家好,感谢观看,如果以下内容有不足之处,还请见谅,深表歉意。 这个语法糖对于静态方法爱好者来说将是一个好消息,因为它以另一种方式实现了静态方法重写和继承。 并且在单例对象的情况下,它还避免了冗长的类语法,将类声明与对象创建合并。 与 Object.assign({}, parent, child) 相比,object 关键字可以有更好的类型提示,并支持类继承。这应该只是类语法的语法糖。 我想讨论一下继承的object关键字的语法。 ###💻用例
object关键字语法可以替代和解决静态类无法覆盖的问题,提高开发效率,使语法更简洁,适用于单例对象的场景。 在这个关键字之前,我们的代码需要这样写
灵感下面是这个提案的灵感说明。 我在程序开发中经常使用静态方法,相比于普通函数,静态方法有更好的静态提示和模块区分功能。 但是我遇到了一个问题,就是静态方法不能被继承和覆盖,这是我所熟悉的语言中统一的设计规范。 但是这在开发过程中确实带来了一些不便,国内有个网站叫知乎 为什么java中不用静态方法? 讨论,这个话题引起了广泛的讨论,有人认为使用静态语法对于OOP来说不够,也有人认为这种方式确实给开发带来了足够的效率提升,提高了开发体验。 很多人和我遇到过同样的问题,就是使用静态开发时,需要抽象父类,而方法复用时,无法覆盖static,降低了开发效率。 但由于static的特殊逻辑,支持静态方法的覆盖似乎不太合适。 那么能不能支持new一个关键字object来实现这个功能呢? 对象具备类的功能,可以被类集成,可以被对象继承,也可以直接使用。 关于OOP,在Java和Kotlin中都有非常多的实际应用,这里请允许我以Java为例来说明。在Java Web开发中,Spring框架是不可或缺的一个框架。 Spring 管理的对象实例都是单例的,也就是一个类只会有一个实例,大多数情况下都是这样的。但是这种情况下,我们需要先声明一个类,然后实例化这个类才能得到对象,这个过程有点繁琐,我们完全可以将这两步合并为一步,即声明一个带类型提示的对象,然后就可以立即使用了。 在 kotlin 中,有 object 关键字语法。以下代码在kotlin中可以运行
而且kotlin的object支持从class继承,但不支持从object继承,这还是不能解决我一开始遇到的问题 所以想问一下这个功能在js/ts中能不能支持 期待您的回复,非常感谢 |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
你可以试试 const parent = { f() { console.log(this.name) }, name: 'parent' }
const child = { __proto__: parent, f() { super.f(); console.log('from child') }, name: 'child' }
child.f() |
Beta Was this translation helpful? Give feedback.
-
写个 @ decorator 就能实现的事,不过感觉意义不大 |
Beta Was this translation helpful? Give feedback.
你可以试试