深入浅出typescript|青训营笔记

58 阅读3分钟

TypeScript类型

TypeScript作为JavaScript的超集,其新增了类型系统来弥补JavaScript缺少类型校验的不足。TypeScript类型分为基本类型和高级类型两大类。

基本类型

TypeScript提供了与JavaScript几乎一致的基本类型,包括:

  • boolean:true或false。
  • number:数值类型。
  • string:字符类型。
  • array:以特定类型元素组成的一个数组。
  • tuple:元素数量和类型都固定的数组。
  • null:表示缺失。
  • undefined:表示未定义。
  • any:可以是任意类型的变量。
  • void:没有返回值的函数的返回类型。
  • never:永远不存在的值的类型。

高级类型

高级类型提供了更加抽象、复杂的操作和类型定义。

接口(Interfaces)

接口定义对象的外部形状和属性方法以及参数的类型。一个对象只要满足接口的形状,就可以被视为实现了该接口。

interface Person {
  name: string;
  age: number;
}

function sayHi(person: Person) {
  console.log(`Hi, I am ${person.name}, ${person.age} years old.`);
}

const person = {
  name: 'James',
  age: 22
}

sayHi(person); // Hi, I am James, 22 years old.

泛型(Generics)

泛型提供了对于一类数据类型的抽象操作,即不立刻指定具体的数据类型,而是在使用时再指定。通常泛型与数组或者类使用相对较多。

function createArray<T>(length: number, value: T): Array<T> {
  let arr = [];
  for(let i = 0; i < length; i++) {
    arr[i] = value;
  }
  return arr;
}

const arr1 = createArray(3, 'hello');
console.log(arr1); // ['hello', 'hello', 'hello']

const arr2 = createArray(2, 100);
console.log(arr2); // [100, 100]

类型断言

TypeScript允许将一个变量指定为一个特定的类型。当编译器无法自动推断变量类型时,可以通过类型断言来告诉编译器某个变量的类型。

let someValue: any = 'hello world';
let strLength: number = (someValue as string).length;

本文介绍了TypeScript中的基本类型和高级类型,并给出了一些类型实例。TypeScript类型不仅可以帮助开发者在开发时发现潜在的错误,而且减少了调试时间,提高了代码可读性和可维护性。同时,我们也可以看到TypeScript类型的灵活性,通过泛型和类型断言可以实现各种类型的转换,更好地适应各种场景需求。

思考:为什么使用TypeScript?

  1. TypeScript弥补了JavaScript的不足:开发大型应用时,JavaScript容易出现不同部分之间的错误,而TypeScript弥补了这个问题,通过类型检查可以避免一些常见但难以调试的问题。
  2. TypeScript增强了可读性和可维护性:TypeScript中定义的变量、方法、函数都有类型限制,这样在新手安装依赖、调试代码或者更改项目代码的时候能快速找到错误点,提高开发效率。同时也可以规范团队开发方式和风格,让协作变得更加舒适和愉快。
  3. TypeScript有优秀的开源社区和生态系统:TypeScript自推出以来,社区活跃度非常高,市面上也有大量的TypeScript相关教程、书籍、视频等资源供开发者参考。除此之外,各种库也都有相应的TypeScript版,例如React、Angular、Vue等框架,VSCode等编辑器等等。

总的来说,TypeScript在保留了JavaScript灵活性的同时,又弥补了JavaScript类型校验的缺陷,在开发大型应用、协作开发、维护维护等方面表现出色,因此越来越多的公司和团队选择使用TypeScript作为开发语言。