ts的class类概念
时间: 2024-08-07 21:01:39 浏览: 53
### TypeScript (TS) 中的 `class` 概念
TypeScript 是 JavaScript 的超集,它扩展了 JavaScript 来提供更好的类型安全性和结构化支持。在 TypeScript 和 ES6 中引入的 `class` 关键字用于创建类(即面向对象程序设计的基础),这允许更清晰地组织代码并提供更强大的特性。
#### **什么是类 (`class`)**
类定义了一种类型的实例(对象)的行为和属性。通过使用 `class` 关键字,您可以声明一个新的类,该类可以包含构造函数、静态方法、成员变量和方法。
#### **构造函数**
构造函数是类的特殊方法,当创建类的新实例时自动调用。它们通常用于初始化实例的状态:
```typescript
class MyClass {
constructor(private myAttribute: any) {
// 初始化操作
}
}
```
在这个例子中,`MyClass` 类有一个私有属性 `myAttribute`,其在构造函数中设置。
#### **继承**
类也可以从其他类派生(继承),这使得子类可以重用父类的功能,并且能够定义自己的行为:
```typescript
class ParentClass {
public method() {
// 方法实现
}
}
class ChildClass extends ParentClass {
override method() {
// 覆盖父类的方法实现
}
}
```
这里,`ChildClass` 继承自 `ParentClass` 并重写了其方法。
#### **接口和类型约束**
在 TypeScript 中,还可以使用接口来描述对象的形状(包括属性和方法)。结合 `extends` 关键字,类可以通过实现接口来明确指定它的行为和结构:
```typescript
interface MyInterface {
name: string;
greet(): void;
}
class MyClass implements MyInterface {
constructor(public name: string) {}
greet() {
console.log(`Hello, ${this.name}!`);
}
}
```
在这个例子中,`MyClass` 实现了一个名为 `MyInterface` 的接口。
### **使用 `type` 进行约束**
在您的引用示例中展示了如何使用 `type` 进行泛型类型约束。这允许创建更具灵活性的函数,可以根据传递给它们的具体类型执行不同的逻辑:
```typescript
type Class = string;
function result<T extends Class>(val: T): T {
console.log(val.length);
return val;
}
result<string>("zhangsan");
```
这个 `result` 函数接受一个参数,假设它是某种类型(这里通过 `T extends Class` 进行约束),并返回相同的值。类型断言 (`<string>`) 表明调用者知道传递的是字符串类型。
---
###
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)