Typescript 类 和 类的类型 和 类的构造器类型 有什么区别

总结
类(Class): 定义了对象的蓝图,包含构造函数、属性、方法等。
类的类型(Type of a Class): 通常指的是类的实例的类型。类名在 TypeScript 中也可以作为其实例的类型。
类的构造器类型: 使用 typeof ClassName,可以获取类的构造器类型,用于表示可以被 "new" 构造的类的类型。

在 TypeScript 中,"类" 和 "类的类型" 是两个相关但不同的概念:

类(Class)
一个类是一种构造函数和原型的组合,它定义了如何创建对象的特定结构和行为。类包括构造器、属性、方法等。在 JavaScript 和 TypeScript 中,类是对象的蓝图。

例如:

typescript
Copy code
class Person {
    name: string;

    constructor(name: string) {
        this.name = name;
    }

    greet() {
        return `Hello, my name is ${this.name}`;
    }
}
在这个例子中,Person 是一个类,它包含一个属性 name 和一个方法 greet()。

类的类型(Type of a Class)
当我们谈论一个类的类型时,我们通常指的是该类的实例的类型。在 TypeScript 中,类名也代表了其实例的类型。当你创建一个类的实例时,这个实例的类型就是那个类。

使用类作为类型:

typescript
Copy code
let person: Person = new Person("Alice");
在这个例子中,person 是 Person 类的实例,因此 person 的类型是 Person。

类型和构造器签名
另外,类在 TypeScript 中还可以用来表示其构造函数的签名。当你想表示一个类本身(而非其实例)的类型时,你使用 typeof ClassName。

typescript
Copy code
function createInstance<T>(c: { new(): T }): T {
    return new c();
}

let personInstance = createInstance(Person);
在这段代码中,createInstance 函数接受一个参数 c,这个参数是一个构造器签名,表示任何可以被 "new" 构造的类型。Person 类作为参数传递时,它是被当作构造器函数来使用的。

相关推荐

  1. TypeScript什么类型接口?

    2024-04-08 23:46:04       15 阅读
  2. 接口抽象什么区别

    2024-04-08 23:46:04       19 阅读
  3. 【es6】es5中 es6 中 class 什么区别

    2024-04-08 23:46:04       26 阅读
  4. C++:特殊设计类型转换

    2024-04-08 23:46:04       28 阅读
  5. QT常见数据类型使用

    2024-04-08 23:46:04       19 阅读
  6. mysqlDATETIMETIMESTAMP数据类型什么区别

    2024-04-08 23:46:04       45 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 23:46:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 23:46:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 23:46:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 23:46:04       20 阅读

热门阅读

  1. 10.左右相同(省模拟赛)

    2024-04-08 23:46:04       14 阅读
  2. python 函数

    2024-04-08 23:46:04       13 阅读
  3. [RK-Linux] RK3399启动流程详解

    2024-04-08 23:46:04       16 阅读
  4. 数据库的介绍、分类、作用和特点

    2024-04-08 23:46:04       15 阅读
  5. 【Go高阶】细说 Channel 的进阶用法

    2024-04-08 23:46:04       15 阅读
  6. Docker Desktop安装

    2024-04-08 23:46:04       16 阅读
  7. react native 相机拍照

    2024-04-08 23:46:04       14 阅读
  8. 贪婪算法python实现

    2024-04-08 23:46:04       18 阅读
  9. nuxt3使用记录二:页面构建的细节(特别是SSG)

    2024-04-08 23:46:04       15 阅读
  10. es6新增加的语法

    2024-04-08 23:46:04       14 阅读