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的开发工具、编辑器插件等,以提高开发效率。