深入理解 TypeScript:基础与面向对象用法指南
需积分: 14 46 浏览量
更新于2024-10-13
收藏 10KB ZIP 举报
资源摘要信息: "TypeScript 基本用法和面向对象用法"
TypeScript 是 JavaScript 的一个超集,它在JavaScript的基础上添加了静态类型系统,使得在编码阶段就能发现类型相关的错误,同时提供了如类、接口、枚举等更丰富的语法特性。本资源将详细介绍TypeScript的基本语法和面向对象编程(OOP)的相关用法。
### TypeScript 基本用法
#### 1. 类型注解和类型推断
TypeScript 通过类型注解来声明变量、函数的参数和返回值的类型。类型注解可以显式地指定一个变量的类型,但TypeScript编译器也非常智能,能够根据上下文推断出变量的类型,这被称为类型推断。
```typescript
// 类型注解
let isDone: boolean = false;
let decimal: number = 6;
let color: string = "blue";
// 类型推断
let myName = "Alice"; // TypeScript 推断 myName 是一个 string 类型
```
#### 2. 接口
在 TypeScript 中,接口是一种定义对象形状的方式。接口可以定义一个对象应该有什么属性和方法,但并不实际实现这些属性和方法。
```typescript
interface Person {
name: string;
age: number;
}
let employee: Person = {
name: "Bob",
age: 30
};
```
#### 3. 类
TypeScript 支持基于类的面向对象编程。类可以包含属性、方法和构造函数。TypeScript 的类也支持继承、装饰器等特性。
```typescript
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world");
```
#### 4. 函数
TypeScript 中的函数可以有具体的类型注解,可以指定参数的类型和返回值的类型。
```typescript
function add(x: number, y: number): number {
return x + y;
}
let myAdd = function(x: number, y: number): number { return x + y; };
```
#### 5. 枚举
枚举是TypeScript为数不多的JavaScript中没有的特性之一,它允许为一组数值赋予友好的名字。
```typescript
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
```
#### 6. 泛型
泛型使得函数、接口或类能够处理不同类型的数据,同时保证类型安全。
```typescript
function identity<T>(arg: T): T {
return arg;
}
let output = identity<string>("myString");
```
### TypeScript 面向对象用法
#### 1. 类的继承
在TypeScript中,使用关键字`extends`来实现类的继承。子类继承父类的方法和属性,可以增加新功能或覆盖原有功能。
```typescript
class Animal {
name: string;
constructor(theName: string) { this.name = theName; }
move(distanceInMeters: number = 0) {
console.log(`${this.name} moved ${distanceInMeters}m.`);
}
}
class Snake extends Animal {
constructor(name: string) { super(name); }
move(distanceInMeters = 5) {
console.log("Slithering...");
super.move(distanceInMeters);
}
}
```
#### 2. 访问修饰符
TypeScript支持`public`、`private`和`protected`等访问修饰符,用来控制类成员的访问级别。
```typescript
class Animal {
public name: string;
private constructor(theName: string) { this.name = theName; }
}
class Rhino extends Animal {
constructor(name: string) { super(name); }
myMethod() {
console.log(this.name);
}
}
let animal = new Animal("Goat"); // 错误: 'Animal' 的构造函数是私有的.
let rhino = new Rhino("Rhino"); // 正确
```
#### 3. 静态属性和静态方法
静态成员属于类本身,而不是类的实例。
```typescript
class Grid {
static origin = {x: 0, y: 0};
static calculateDistanceFromOrigin(point: {x: number; y: number;}) {
let xDist = (point.x - Grid.origin.x);
let yDist = (point.y - Grid.origin.y);
return Math.sqrt(xDist * xDist + yDist * yDist) / this.scale;
}
scale: number;
constructor (scale: number) {
this.scale = scale;
}
}
```
#### 4. 抽象类和抽象方法
抽象类不能被实例化,且可以包含抽象方法,抽象方法只声明不实现,由继承的子类实现。
```typescript
abstract class Department {
constructor(public name: string) {}
printName(): void {
console.log("Department name: " + this.name);
}
abstract printMeeting(): void; // 必须在派生类中实现
}
class AccountingDepartment extends Department {
constructor() {
super("Accounting and Auditing");
}
printMeeting(): void {
console.log("The Accounting Department meets each Monday at 10am.");
}
}
```
### 结语
TypeScript 通过提供类型系统和面向对象编程特性,使***ript开发更加安全和高效。基本用法涵盖了TypeScript编程的基础,而面向对象用法则进一步扩展了类和继承的概念。对于任何希望提高前端开发质量的开发者来说,掌握TypeScript的基本和面向对象用法是必备技能之一。
2021-02-19 上传
2021-03-31 上传
2021-02-15 上传
2021-03-28 上传
2021-03-18 上传
2021-02-08 上传
2021-05-27 上传
2022-10-12 上传
2021-03-06 上传
小朋友120
- 粉丝: 449
- 资源: 2
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍