TypeScript静态方法继承

同步版本

class Foo {
    static boo<T extends typeof Foo>(this: T, a: number): InstanceType<T> {
        return (new this()) as InstanceType<T>;
    }
}

class Bar extends Foo {}

// b: Bar
let b = Bar.boo(1);

异步版本

class Foo {
    static async boo<T extends typeof Foo>(this: T, a: number): Promise<InstanceType<T>> {
        const instance = new this();
        await instance.create();
        return <InstanceType<T>>instance;
    }
    private create(){}
}

class Bar extends Foo {}

(async () => {
    // b: Bar
    let b = await Bar.boo(1);
})();

引用自:https://github.com/Microsoft/TypeScript/issues/5863

原文地址:https://www.cnblogs.com/ystrdy/p/9597508.html

时间: 2025-01-21 20:47:56

TypeScript静态方法继承的相关文章

谈谈java中静态变量与静态方法继承的问题

谈谈java中静态变量与静态方法继承的问题 学习的中如果遇到不明白或者不清楚的的时候,就是自己做些测试,自己去试试,这次我就做一个关于静态变量的继承和静态方法继承问题的测试. 首先我先建一个父类: 这样我在建一个子类: 这些都准备好以后,我对子类创建对象,然后用  类名.静态变量/静态方法  和  对象名.静态方法/静态变量  对他们输出的结果进行测试. 这样输出种类有: 这样我输出的结果是: 这样来总结一下: 1. 通过类名来调用子类中的静态变量和静态方法,当父类与子类相同时是,子类会隐藏父类

Java 语言静态变量和静态方法继承问题(转)

首先,定义一个类A如下 class A { static int a = 1; static int b = 2; public static void printA() { System.out.println(a); } public static void printB() { System.out.println(b); } } class A {     static int a = 1;     static int b = 2;     public static void pri

Swift 中的静态方法继承

Base and Derived Classes: class BaseClass{ class func staticMethod(){ println("BaseClass.staticMethod") } class func staticMethodWithSelfCall(){ self.staticMethod() } func instanceMethodWithStaticCall(){ self.dynamicType.staticMethod() } } class

4、TypeScript 类

介绍 TypeScript 是面向对象的 JavaScript. 类描述了所创建的对象共同的属性和方法. TypeScript 支持面向对象的所有特性,比如 类.接口等. 定义类的关键字为 class,后面紧跟类名,类可以包含以下几个模块(类的数据成员): 字段 ? 字段是类里面声明的变量.字段表示对象的有关数据. 构造函数 ? 类实例化时调用,可以为类的对象分配内存. 方法 ? 方法为对象要执行的操作. 实例代码 class Car { // 字段 engine:string; // 构造函数

JavaScript面向对象轻松入门之继承(demo by ES5、ES6)

继承是面向对象很重要的一个概念,分为接口继承和实现继承,接口继承即为继承某个对象的方法,实现继承即为继承某个对象的属性.JavvaScript通过原型链来实现接口继承.call()或apply()来实现实现继承. 接口继承的实现在ES5中是比较麻烦,在其它OOP语言中一个extends关键字就可以实现,但在ES5中要通过原型链去模拟,非常难理解,对初学者很不友好,并且有好几种接口继承的方式.本文为了对初学者更友好,并不打算让读者了解接口继承的原理,而是直接把接口继承实现方法封装成一个函数,大家只

转载:《TypeScript 中文入门教程》 4、类

版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 介绍 传统的JavaScript程序使用函数和基于原型的继承来创建可重用的组件,但这对于熟悉使用面向对象方式的程序员来说有些棘手,因为他们用的是基于类的继承并且对象是从类构建出来的. 从ECMAScript 2015,也就是ECMAScript 6,JavaScript程序将可以使用这种基于类的面向对象方法. 在TypeScript里,我们允许开发者现在就使用这些特性,并且编译后的J

如何继承Date对象?由一道题彻底弄懂JS继承。

前言 见解有限,如有描述不当之处,请帮忙及时指出,如有错误,会及时修正. ----------长文+多图预警,需要花费一定时间---------- 故事是从一次实际需求中开始的... 某天,某人向我寻求了一次帮助,要协助写一个日期工具类,要求: 此类继承自Date,拥有Date的所有属性和对象 此类可以自由拓展方法 形象点描述,就是要求可以这样: // 假设最终的类是 MyDate,有一个getTest拓展方法 let date = new MyDate(); // 调用Date的方法,输出GM

python_静态,组合,继承

静态属性:将在类中定义的函数属性可以使用数据属性调用的方法 在要修饰的函数属性前面添加@property class Tue(): def __init__(self,name,age,data): self.name = name self.age = age self.data = data @property def info_self(self): return self.name r1 = Tue('alom',14,"zhejiang") print(r1.info_sel

Backbone

什么是MVC模式 模式:一种解决问题的方法 设计模式  :工厂模式.适配器模式.观察者模式等 框架模式  :MVC.MVP.MVVM等(框架模式里有很多设计模式) MVC: M-Model V-View C-Controller(连接M和V) 2. MVC模式的思想 把M和V分开 服务器端MVC模式非常容易实现 3.   Web前端MVC模式 Web页面本身就是一个大的View,不容易做到分享操作 backbone适合复杂的大型开发 4.  backbone的模块 Events事件驱动方法 Mo