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

Typescript:禁止使用".name“来获取函数/类名

Typescript是一种静态类型的编程语言,它是JavaScript的超集,可以在任何支持JavaScript的地方运行。Typescript通过添加静态类型和其他特性来增强JavaScript,提供更好的开发工具和更强大的编译时检查。

在Typescript中,禁止使用".name"来获取函数/类名是因为".name"是JavaScript中的一个特殊属性,用于获取函数/类的名称。然而,在Typescript中,由于编译后的JavaScript代码可能会进行压缩和混淆,函数/类的名称可能会被改变,因此使用".name"来获取函数/类名可能会导致不可预测的结果。

为了解决这个问题,Typescript提供了一些替代的方法来获取函数/类的名称。以下是一些常用的方法:

  1. 使用typeof操作符:可以使用typeof操作符获取函数/类的名称。例如:
代码语言:txt
复制
function myFunction() {
  console.log(typeof myFunction); // 输出 "function"
}

class MyClass {
  constructor() {
    console.log(typeof MyClass); // 输出 "function"
  }
}
  1. 使用构造函数的name属性:可以通过构造函数的name属性获取类的名称。例如:
代码语言:txt
复制
class MyClass {
  constructor() {
    console.log(MyClass.name); // 输出 "MyClass"
  }
}
  1. 使用自定义属性:可以在函数/类中添加一个自定义属性来保存名称。例如:
代码语言:txt
复制
function myFunction() {
  console.log(myFunction.name); // 输出 "myFunction"
}

class MyClass {
  static className = "MyClass";

  constructor() {
    console.log(MyClass.className); // 输出 "MyClass"
  }
}

总结: 在Typescript中,禁止使用".name"来获取函数/类名,因为它可能会导致不可预测的结果。可以使用typeof操作符、构造函数的name属性或自定义属性来获取函数/类的名称。

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

相关·内容

【Vue3+TypeScript】CRM系统项目搭建之 — 关于拥抱 TypeScript 这件事【下】

中可以直接使用字面量进行类型声明 let a: 10; a = 10; 这样就规定了其只可以 a 被 10 赋值 TypeScript 可以使用 | 连接多个类型【联合类型】 let c: boolean...,可以使用 unknowm 类型声明表示未知类型的值。...静态属性 不需要生成实例就可以访问的属性就是静态属性,只需要在中定义的实例属性前使用 static 关键字定义。 static age: number = 18; b....super 关键字 在子类中 super 就代表当前的父 由于在子类中可能是需要额外定义其它类属性的,因此会用到了 constructor 构造函数,因此需要使用到 super 关键字对父进行调用...调用父的构造函数 } sayHello() { super.sayHello(); } } })() 抽象 如何禁止一个被用来创建对象呢

7210

TypeScript学习指南(有PDF小书+思维导图)

,系统的来过一遍,然后做用TypeScript + Vue 3.-0 / TypeScript + React 做一些demo / 项目 熟练它们的配合使用。...泛型的作用 可以帮助我们确认的所有属性都在使用相同的类型 使用格式 class { name!: T; hobby!...在TypeScript里我们可以在参数名旁使用 ?实现可选参数的功能。 可选参数必须放在必须参数后面。 格式 : 函数名(变量?...10.导出 10.1 导出声明 任何声明(比如变量,函数,类型别名或接口)都能够通过添加export关键字导出。...装饰器工厂 (传参数) 12.2 装饰器 装饰器表达式会在运行时当作函数被调用,的构造函数作为其唯一的参数。 使用场景:应用于构造函数,可以用来监视,修改或替换定义。

2.6K30

一起重学TypeScript

泛型的作用 可以帮助我们确认的所有属性都在使用相同的类型 使用格式 class { name!: T; hobby!...6.2 静态属性 的静态成员(属性 和 方法) 只能通过 可以访问。...在TypeScript里我们可以在参数名旁使用 ?实现可选参数的功能。 可选参数必须放在必须参数后面。 格式 : 函数名(变量?...10.导出 10.1 导出声明 任何声明(比如变量,函数,类型别名或接口)都能够通过添加export关键字导出。...装饰器工厂 (传参数) 12.2 装饰器 装饰器表达式会在运行时当作函数被调用,的构造函数作为其唯一的参数。 使用场景:应用于构造函数,可以用来监视,修改或替换定义。

2K00

使用TS+Sequelize实现更简洁的CRUD

sequelize修改表,默认会在animal后边添加一个字母`s`表示负数 freezeTableName: true, // 禁止自动添加时间戳相关属性 timestamps: false...Sequelize-typescript使用方式 首先因为是用到了TS,所以环境依赖上要安装的东西会多一些: # 这里采用ts-node完成举例 npm i ts-node typescript npm...但是在Sequelize-typescript就可以直接使用继承实现我们想要的效果: // 首先还是我们的Animal模型定义 // /models/animal.ts import { Table,...当然如果连这里的范型或者as也不想写的话,还可以在子类中针对父方法进行重写。...并不需要完整的实现逻辑,只需要获取返回值,然后修改为我们想要的类型即可: class Dog extends Animal { static async getList() { // 调用父方法

2.7K20

如何理解TypeScript 对象

本文将详细介绍 TypeScript 中对象的概念、创建和使用对象的方法,并提供一些示例帮助理解。...我们可以通过访问对象的属性和方法获取和操作相应的数据。使用构造函数除了对象字面量,我们还可以使用构造函数来创建对象。构造函数是一种特殊的函数,用于创建和初始化对象。...通过对象名和属性或方法名的组合,我们可以获取和调用相应的值和行为。...方括号访问除了点符号访问,我们还可以使用方括号 [] 来访问对象的属性和方法。通过将属性或方法名放在方括号内,我们可以动态地获取和调用相应的值和行为。...对象的属性可选属性在 TypeScript 中,我们可以通过在属性后面加上 ? 符号定义可选属性。可选属性表示该属性是可选的,可以存在也可以不存在。

18910

《现代Typescript高级教程》泛型和类型体操

泛型 泛型允许我们在定义中使用类型参数,以便在创建的实例时指定具体的类型。...Stack,它使用类型参数 T 表示堆栈中的元素类型。...2. keyof 操作符和索引访问类型 keyof 操作符用于获取类型的所有属性,结合索引访问类型可以从一个类型中获取属性的具体类型。..." type PersonNameType = Person['name']; // string 在上面的示例中,我们使用 keyof 操作符获取了 Person 接口的属性集合,并通过索引访问类型获取了...我们还可以结合泛型和内置泛型函数来实现更复杂的类型操作。以下是一个示例,展示了如何使用 Pick 和泛型创建一个函数,该函数从给定对象中选择指定属性,并返回一个新的对象。

25830

1.8W字|了不起的 TypeScript 入门教程(第二版)

不支持模块,泛型或接口 社区的支持仍在增长,而且还不是很大 大量的社区支持以及大量文档和解决问题的支持 1.2 获取 TypeScript 命令行的 TypeScript 编译器可以使用 npm 包管理器来安装...,而是直接使用线上的 TypeScript Playground 学习新的语法或新特性。...在 TypeScript 中除了可以重载普通函数之外,我们还可以重载中的成员方法。...R : any; 以上代码中 infer R 就是声明一个变量承载传入函数签名的返回值类型,简单说就是用它取到函数返回值的类型方便之后使用。...14.1 构造函数的类属性推断 当 noImplicitAny 配置属性被启用之后,TypeScript 4.0 就可以使用控制流分析确认中的属性类型: class Person { fullName

10K51

TypeScript趁早学习提高职场竞争力

学习TS,记得下载Node.js哦~ 使用npm全局安装typescript,进入命令行,输入:npm i -g typescript,创建一个ts文件,使用tsc对ts文件进行编译:进入命令行,进入ts... 定义: class { 属性: 类型; constructor(参数: 类型){ this.属性 = 参数; } 方法名(){ ... } } 示例: class Person...定义static,方法或属性 构造函数 class Dog{ name = 'j'; age = 1; bark(){ alert('j'); } } const dog = new...,在子类构造函数中必须对父引用 super(name); // 调用父的构造函数 this.age = age; } sayHello() { // 在的方法中 super 就表示当前的父..._name = name; this._age = age; } // 定义方法,用来获取name属性 getName() { return this.

1.8K10

TypeScript 5.0 正式发布!

那就可能需要使用 console.log 调试 greet: class Person { name: string; constructor(name: string) {...返回原始方法的执行结果 现在我们就可以使用 loggedMethod 修饰 greet 方法: class Person { name: string; constructor(name...除了元数据之外,方法的 context 对象还有一个有用的函数:addInitializer。这是一种挂接到构造函数开头的方法(如果使用静态方法,则挂接到本身的初始化)。...allowImportingTsExtensions --allowImportingTsExtensions 允许 TypeScript 文件使用特定于 TypeScript 的扩展(如 .ts、....allowArbitraryExtensions 在 TypeScript 5.0 中,当导入路径以不是已知 JavaScript 或 TypeScript 文件扩展的扩展结尾时,编译器将以 {file

3.7K70

TypeScript进阶(一)深入理解和接口

的继承 的继承是面向对象编程中常见的概念,它允许我们创建一个新,并从现有的中继承属性和方法。在 TypeScript 中,我们使用 extends 关键字实现的继承。...在 TypeScript 中,我们使用 abstract 关键字定义抽象和抽象方法。 抽象不能被实例化,只能被继承。确保在定义抽象使用 abstract 关键字。...我们可以直接通过访问这些静态成员,而不需要创建的实例。 接口 -- 接口是一种用于描述对象的形状的类型。在 TypeScript 中,我们使用 interface 关键字定义接口。...greet() 函数接受一个参数,并使用该参数中的属性打印问候语。 索引器 索引器允许我们通过索引来访问对象的属性。在 TypeScript 中,我们可以使用字符串或数字作为索引类型。...通过使用索引签名定义索引器。 索引签名可以是字符串或数字类型,分别对应于对象的属性和数组的索引。 使用索引器时要注意边界检查和类型安全性,确保索引的合法性和返回值的类型正确。

25110
领券