第五节课的学习笔记| 青训营

91 阅读2分钟

TypeScript学习要点

学过Java的感觉可以直接延申进来(划掉)

类型基础、接口:

TypeScript拥有与Java等类似基本数据类型(字符串、数字、布尔值等)、对象类型、数组类型、函数类型等和接口。

// 基本数据类型
let name: string = 'John';
let age: number = 25;
let isStudent: boolean = true;

// 对象类型
let person: { name: string, age: number } = { name: 'Alice', age: 30 };

// 接口定义
interface Person {
name: string;
age: number;
}

// 类实现接口
class Student implements Person {
constructor(public name: string, public age: number) {}
}

let student: Person = new Student('Bob', 22);

类型注解与类型推断:

这个功能应该比较简单明了,看一下代码就能直接明白了。

// 类型注解
function add(a: number, b: number): number {
return a + b;
}

// 类型推断
let result = add(3, 5); // TypeScript自动推断result为number类型

泛型:

类似于Java中的重写,理解泛型的作用,以实现更通用、灵活的代码,涵盖函数、类、接口等。

// 泛型函数
function identity<T>(arg: T): T {
return arg;
}

let value = identity<number>(5);

枚举:

typescript特色类型 (应该)

// 枚举类型
enum Color {
Red,
Green,
Blue,
}

let selectedColor: Color = Color.Red;

模块化与命名空间:

如何将代码拆分成可管理的模块,并了解命名空间的用法。

// 模块化
import { greet } from './greeting';

// 命名空间
namespace Geometry {
export function calculateArea(radius: number): number {
return Math.PI * radius * radius;
}
}

let area = Geometry.calculateArea(5);

类型断言与非空断言:

掌握类型断言的方式,处理类型转换,以及在合适的情况下使用非空断言。

// 类型断言
let userInput: any = 'hello';
let strLength: number = (userInput as string).length;

// 非空断言
let element = document.getElementById('myElement')!;
element.textContent = 'Hello TypeScript';

类型检查与编译:

了解TypeScript的编译过程,如何配置编译选项,以及如何使用类型检查提高代码质量。

// 编译选项在tsconfig.json中配置
{
"compilerOptions": {
"target": "ES6",
"outDir": "./dist"
}
}

高级类型:

学习交叉类型、联合类型、条件类型等高级类型,处理更复杂的类型需求。

// 联合类型
function printId(id: number | string) {
console.log(id);
}

// 条件类型
type isString<T> = T extends string ? true : false;

接口继承与类继承:

深入了解接口和类的继承关系,如何复用代码和类型定义。

// 接口继承
interface Person {
name: string;
}

interface Student extends Person {
age: number;
}

// 类继承
class Teacher extends Person {
teach(subject: string) {
console.log(${this.name} is teaching ${subject});
}
}

Decorators:

了解装饰器的使用,可以用于类、方法等,以扩展或修改类的行为。

// 装饰器示例
function log(target: any, key: string) {
console.log(${key} is being called on ${target.constructor.name});
}

class Example {
@log
greet() {
console.log('Hello, TypeScript!');
}
}

异步编程与Promise:

结合TypeScript的类型系统,学习如何处理异步编程,使用Promise等。

// 异步函数
async function fetchData(): Promise<string> {
return new Promise(resolve => {
setTimeout(() => {
resolve('Data fetched');
}, 2000);
});
}

fetchData().then(data => console.log(data));

使用第三方库:

了解如何在TypeScript项目中使用第三方JavaScript库,并为其编写类型声明。

与现有项目整合:

学习如何将TypeScript引入现有JavaScript项目,并逐步将代码迁移到TypeScript中。

工具与编辑器支持:

熟悉TypeScript的开发工具、编辑器插件等,以提高开发效率。