TypeScript是JavaScript的超集,为我们提供了强大的静态类型检查和面向对象的编程能力。在TypeScript中,类和泛型是两个非常重要的概念,它们为我们的代码提供了更强大的抽象和重用能力。
TypeScript简述
TypeScript可以为JS提供类型能力,在开发过程中,配合IDE,TS 能实时检查类型的合法性,还能基于类型给出更精准的自动补全等特征提升码字效率;在编译过程中,TS 仍然能做类型检查,再把 TS 代码编译成 JS 代码。
let name: string = 'kama';
这样一段代码,就是 TS 的基本使用方法。name 变量在声明的同时,注解了 string 类型,从此只有字符串能赋值给 name。
类型声明标签
TS 在变量声明的过程中,构建了另一个平行的类型声明空间。理解两个空间的隔离和联系,才能在各种杂乱的声明中保持清醒。类型声明空间和变量声明空间是两个世界,类型在其空间里可以互相引用赋值,但不能当变量用,变量在其空间里可以互相引用赋值,但不能当类型用,两个空间的声明甚至可以同名。
但两者有交流的方式:在变量声明空间中,可以通过一些语法给变量注解类型,比如 const 变量: 类型;在类型声明空间中,可以通过一些语法捕获变量的类型,比如 type 类型 = typeof 变量。
一个.ts文件是无法直接执行的,需要编译为对应的.js。然而.ts文件中同时有变量声明空间和类型声明空间的代码,那对于单个文件而言,从 TS 到 JS,要做的就是:把类型声明空间的部分择出来,剔除掉;把变量声明空间的部分编译为 js。
通常 TS 中,声明变量的同时注解类型,像这样:const foo: string = ''。TypeScript 的设计目标之一是让你从现有的 JavaScript 库中安全、轻松的使用 TypeScript,你可以通过 TypeScript 声明文件来做到这一点。你可以通过 declare 关键字,来告诉 TypeScript,你正在试图表述一个其他地方已经存在的代码(如:写在 JavaScript、CoffeeScript 或者是像浏览器和 Node.js 运行环境里的代码)。declare 用来定义已经声明的变量的类型,表明这句 TS 只用于在「类型声明空间」对「变量声明空间」中已存在的内容进行类型补充,不具有执行意义。
类的使用
declare 用来定义已经声明的变量的类型,表明这句 TS 只用于在「类型声明空间」对「变量声明空间」中已存在的内容进行类型补充,不具有执行意义。
class Book {
private name: string;
constructor(name: string) {
this.name = name;
}
read() {
console.log(`${this.name} is didactic`);
}
}
const shakespare = new Book("Shakespare");
shakespare.read(); // Output: Shakespare is didactic
在这个例子中,我们定义了一个名为Book的类,它具有一个私有属性name和一个公共方法read。通过类的构造函数,我们可以创建Book类的实例,并调用read方法。