首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

获取TypeScript类中的方法名

可以通过以下几种方式实现:

  1. 使用反射(Reflection):通过反射可以获取类的成员信息,包括方法名。在TypeScript中,可以使用Reflect.ownKeys()方法获取类的所有成员,然后通过判断成员类型为函数来获取方法名。例如:
代码语言:txt
复制
class MyClass {
  method1() {
    // ...
  }

  method2() {
    // ...
  }
}

const myClass = new MyClass();
const methodNames = Reflect.ownKeys(Object.getPrototypeOf(myClass))
  .filter(key => typeof myClass[key] === 'function');
console.log(methodNames); // ['method1', 'method2']
  1. 使用装饰器(Decorator):装饰器是一种特殊的声明,可以附加到类、方法、属性或参数上,用于修改类的行为。通过定义一个装饰器,可以在类中的方法上添加额外的属性,例如方法名。例如:
代码语言:txt
复制
function methodName(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
  descriptor.value.methodName = propertyKey;
}

class MyClass {
  @methodName
  method1() {
    // ...
  }

  @methodName
  method2() {
    // ...
  }
}

const myClass = new MyClass();
const methodNames = Object.getOwnPropertyNames(Object.getPrototypeOf(myClass))
  .filter(key => typeof myClass[key] === 'function')
  .map(key => myClass[key].methodName);
console.log(methodNames); // ['method1', 'method2']
  1. 使用元数据(Metadata):元数据是一种描述数据的数据,可以在类或方法上添加额外的信息。通过使用Reflect.getMetadata()方法可以获取类或方法上的元数据,从而获取方法名。例如:
代码语言:txt
复制
import 'reflect-metadata';

class MyClass {
  method1() {
    // ...
  }

  method2() {
    // ...
  }
}

Reflect.defineMetadata('methodName', 'method1', MyClass.prototype, 'method1');
Reflect.defineMetadata('methodName', 'method2', MyClass.prototype, 'method2');

const myClass = new MyClass();
const methodNames = Object.getOwnPropertyNames(Object.getPrototypeOf(myClass))
  .filter(key => typeof myClass[key] === 'function')
  .map(key => Reflect.getMetadata('methodName', myClass, key));
console.log(methodNames); // ['method1', 'method2']

以上是获取TypeScript类中方法名的几种方法,可以根据具体需求选择适合的方式。腾讯云提供的相关产品和服务可以参考腾讯云官方文档:腾讯云产品与服务

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

TypeScript

TypeScript是一种用于创建对象蓝图,它定义了对象属性和方法。可以看作是对象模板,通过实例化可以创建具体对象。定义要定义一个,可以使用 class 关键字后跟名称。...,它们是函数。...const person = new Person("John", 25);继承TypeScript支持继承,可以通过继承一个基来创建派生。....`); }}派生可以继承基属性和方法,并可以添加自己属性和方法。访问修饰符TypeScript提供了访问修饰符来控制属性和方法访问权限。...public:默认访问修饰符,公开访问,可以在内部和外部访问。private:私有访问,只能在内部访问。protected:受保护访问,只能在内部和派生访问。

76330
  • 【原创】TypeScript和模块

    TypeScript定义 TypeScript定义使用class关键字,关键字后紧跟名。描述了构建对象共同属性和方法。...is ${this.age}`; } } let person = new Person('张三',18); console.log(person.getPersonInfo()); 注意: 属性需要在字符串中直接使用...并在字符串中使用${}进行属性使用。 属性和方法也可以使用public和private等修饰符进行对属性和方法访问控制。...TypeScript继承 继承是指子类继承父特征和行为(属性和方法),使得子类具有父相同特征和行为。TypeScript中使用extends关键字完成对继承。...模块 项目中可以将代码拆分为多个文件,多个文件可以互相加载,并通过export和import关键字完成模块功能交换(从一个模块调用另外一个模块函数)。

    13710

    Java:如何轻松获取当前执行法名

    在编程世界里,经常会遇到各种各样问题。有时候,需要了解当前执行法名,以便更好地调试代码或者记录日志。那么,如何在Java轻松获取当前执行法名呢?本文将为您揭示这个神秘技巧!...一、Java方法执行上下文在Java,每个方法都有一个与之关联执行上下文。执行上下文包含了方法调用者、被调用者、返回值等信息。要获取当前执行法名,首先需要获取到当前执行上下文。...:" + currentMethodName); }}二、使用反射获取当前执行法名除了直接从堆栈跟踪信息获取,还可以使用Java反射机制来获取当前执行法名。...这种方法更加灵活,可以在运行时动态地获取法名。2.1 获取目标Class对象要使用反射获取当前执行法名,首先需要获取到目标Class对象。...:" + currentMethodName); }}三、总结本文介绍了如何在Java轻松获取当前执行法名

    13210

    TypeScript防脱发级入门——TS

    抽象 3.1 为什么需要抽象 抽象(abstract)在JS是没有的,它是TS提出来,有时候,某个只表示抽象概念,主要用于提取子类共有的成员,而不能直接创建它对象,这时该类可以作为抽象...,可能知道有些成员是必须要存在,比如说一个人名字,每个人都有名字,但是我们没有办法在父中直接书写具体叫什么名,只能在子类对象才能清楚知道,因此,需要一种强约束,让继承该父子类必须实现该成员...需要注意是,只有在抽象,才可以有抽象成员,这些抽象成员必须在子类时实现,必须必 举个例子:抽象成员,子类实现 abstract class Person {//抽象 abstract...静态方法this指向当前,而实例方法this指向当前对象 5....隐式any:ts根据实际情况推导出any类型 TS索引器作用 在严格检查下,可以实现为动态增加成员 可以实现动态操作成员 在js,所有成员名本质上,都是字符串,如果使用数字作为成员名,会自动转换为字符串

    53420

    TypeScript 理解及应用场景

    class依然有一些特性还没有加入,比如修饰符和抽象 TypeScript class 支持面向对象所有特性,比如 、接口等 二、使用方式 定义关键字为 class,后面紧跟名,可以包含以下几个模块...} } 修饰符 可以看到,上述形式跟ES6十分相似,typescript在此基础上添加了三种修饰符: 公共 public:可以自由访问程序里定义成员 私有 private:只能够在该类内部进行访问...Square { static width = '100px' } console.log(Square.width) // 100px 上述都能发现一个特点就是,都能够被实例化,在 typescript...,还存在一种抽象 抽象 抽象做为其它派生使用,它们一般不会直接被实例化,不同于接口,抽象可以包含成员实现细节 abstract 关键字是用于定义抽象和在抽象内部定义抽象方法,如下所示...三、应用场景 除了日常借助特性完成日常业务代码,还可以将(class)也可以作为接口,尤其在 React 工程是很常用,如下: export default class Carousel extends

    15810

    TypeScript,抽象和接口区别

    现在,对于TypeScript使用越来越多,而要用TypeScript进行开发,不仅是语法上不同,更是思想上不同。...今天,就来分享下TypeScript,抽象与接口特性及其区别;这是JavaScript没有提及概念。所以,更要对其了解,才能更好在项目中应用它们。 目录: 1.什么是抽象?...抽象,顾名思义,即抽象,从面向对象角度来想,世界万物都可以用来定义 (男人是个,女人是个,奔驰是个,宝马也是个), 那么抽象又是抽象, 举个例子,刚说了男人,女人,它们是不是都有公共一些属性和行为方法...抽象(事物)抽象,抽象用来捕捉子类通用特性,接口是行为抽象 接口可以被多层实现,而抽象只能单一继承 接口不具备继承任何具体特点,仅仅承诺了能够调用方法 抽象更多定义是在一系列紧密相关之间...,而接口大多数是定义在关系疏松但都实现某一功能 总结: 抽象是对本质抽象,表达是 is a 关系,比如:male is a Human。

    1.1K20

    spring aop 利用JoinPoint获取参数值和方法名

    大家好,我是架构君,一个会写代码吟诗架构师。今天说一说spring aop 利用JoinPoint获取参数值和方法名称[通俗易懂],希望能够帮助大家进步!!!...() :获取连接点方法签名对象;  java.lang.Object getTarget() :获取连接点所在目标对象;  java.lang.Object getThis() :获取代理对象本身...一、概述 AOP实现方法在上两篇博客已经用了两种方法来实现现在问题来了虽然我们利用AOP,那么客户端如何信息传递?...利用JoinPoint接口来实现客户端给具体实现传递参数。 二、代码演示。...我们可以通过Advice添加一个JoinPoint参数,这个值会由spring自动传入,从JoinPoint可以取得。

    6.3K10

    Java反射(通过反射获取结构、invoke方法、获取注解)

    获取运行时完整结构 可以获取:包、修饰符、类型名、父(包括泛型父)、父接口(包括泛型父接口)、成员(属性、构造器、方法)、注解(、方法上、属性上)。...//Constructor: //取得修饰符: public int getModifiers(); //取得方法名称: public String getName(); //取得参数类型:...System.out.println(f); // } //getDeclaredFields():获取当前运行时声明所有属性,包括 private属性...> outer = ec.getDeclaringClass(); System.out.println(outer); } 2.7 总 结 了解了反射这么多API,其实在实际操作,通过反射获取信息操作代码...调用运行时指定结构 3.1 调用指定属性 在反射机制,可以直接通过Field操作属性,通过Field提供set()和get()方法就可以完成设置和取得属性内容操作。

    4.2K91

    TypeScript中派生接口

    TypeScript 当然支持这一点,你可以创建一个或多个接口,然后再定义生成这个接口实例(或工厂)。...因此在本文中,我们探索了 typescript 两个功能,可以帮助我们解决这个问题。 从派生接口 TypeScript 一个鲜为人知特性是接口可以从派生。...当我第一次遇到它时,发现它非常反直觉,但在官方文档解释了其背后基本原理:【https://www.typescriptlang.org/docs/handbook/interfaces.html】...当接口类型扩展类型时,它继承成员但不继承它们实现。...就好像接口已经声明了所有成员而没有提供实现一样。接口甚至会继承基私有成员和受保护成员。这意味着当你创建一个继承了具有私有或受保护成员接口时,该接口类型只能由该类或其子类实现。

    84340

    使用TypeScript积累自己

    但是js规范性较差,可维护性不强,有很多弊端,采用TypeScript来开发和积累我们库是比较好一种选择。TypeScript是一种由微软开发自由和开源编程语言。...它是JavaScript一个超集,而且本质上向这个语言添加了可选静态类型和基于面向对象编程。在易用性、可读性和易维护上都有了不小提高。采用TypeScript来开发可以发布成js文件来使用。...下面就简单介绍一下TypeScript工作流。...通过这种方式可以积累自己库,方便做项目时快速开发。...ts文件 ] } 这样将开发过程很多通用问题抽象出来,封装成库来使用,可以让开发效率更高,也让自己或者团队有技术沉淀。

    1.2K30

    SpringBoot 之 普通获取Spring容器bean

    容器,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通Java,想直接使用spring提供其他对象或者说有一些不需要交给spring管理,但是需要用到spring里一些对象..."); ac.getBean("beanId");  这样方式就可以很轻易获取我们所需要对象。...但是往往我们所做都是Web Application,这时我们启动spring容器是通过在web.xml文件配置,这样就不适合使用上面的方式在普通获取对象了,因为这样做就相当于加载了两次spring...容器,而我们想是否可以通过在启动web服务器时候,就把Application放在某一个,我们通过这个获取,这样就可以在普通获取spring bean对象了,让我们接着往下看 普通调用Spring...然后我们编写测试controller,并从刚才写springutil获取这个bean ?

    3.6K10
    领券