类
class Person {
name;
eat() {
('im eating');
}
}
var p1 = new Person(); // 类的实例化
= 'batman';
(); // im eating
访问控制符:
- public(默认): public的属性和方法在类的内部和外部都可以被访问到
- private: 在类的内部可以访问,但是在类的外部不能被访问到
类的构造方法
class Person {
constructor() { // 类的构造方法,只有在实例化的时候才会被调用一次
console.log('haha');
}
name;
eat() {
console.log(im eating);
}
}
var p1 = new Person();
// 构造方法里面可以规范类实例化时的传参等
class Person {
constructor(name: String) { // 类的构造方法,只有在实例化的时候才会被调用,并且只会调用一次
console.log('haha');
}
name;
eat() {
console.log(im eating);
}
}
var p2 = new Person(); // 报错,实例化必须传入name参数
var p2 = new Person('batman');
类的继承
class Employee extends Person {
constructor(name: String, code: String) { // 实例化时必须传进来两个参数
super(name); // 子类的构造函数必须要调用父类的构造函数
this.code = code;
}
code: String;
work() {
super.eat(); // 通过super调用父类的eat方法
this.doWork(); // 调用当前类的work方法
}
private doWork() { // 将doWork方法声明为私有方法,外部不能调用
('im working');
}
}
// super关键字用来调用父类的构造函数
var el = new Employee('name', '1');
var el2 = new Employee('dby', '234');
();
// im eating
// im working
(); // 报错,外部不能访问doWork私有方法
==note: 子类的构造函数必须要调用父类的构造函数(super)==
泛型(generic)
参数化的类型,一般用来限制集合的内容
var workers: Array<Person> = [];
// 尖括号中的Person类型就是这个数组的泛型,规定了数组中只能放Person类型
workers[0] = new Person('zhangsan');
workers[1] = new Person('lisi');
workers[2] = 1; // 报错
接口(Interface)
用来建立某种代码约定,使得其他开发者在调用某个方法或创建新的类时必须遵守接口所定义的代码约定
接口使用方式:
- 声明一个接口
// 声明一个接口
interface Iperson{
name: string,
age: number,
}
class Person {
constructor(public config: Iperson) { // 在实例化Person类的时候,必须传入一个满足接口类型的参数
}
}
var p1 = new Person({
name: 'zhangsan', // 满足接口声明属性要求
age: 23,
});
- 接口用来申明方法
interface Animal { // 动物接口
eat() {
}
}
class Sheep implements Animal { // implements声明sheep类实现Animal接口
// 当一个类实现一个接口时必须实现接口中声明的方法,否则报错
eat() {
('sheep实现animal接口');
}
}
==note: 当一个类实现一个接口时必须实现接口中声明的方法==
模块
模块将代码分割成可重用的单元,开发者可以自行决定将模块中的哪些资源(类、方法、变量)暴露出去供外部使用,哪些资源只在模块内部使用。
- export: 对外暴露
//
export var prop1; // 对外暴露prop1属性
var prop2; // 不对外暴露
export function func1() {} // 对外暴露func1方法
function func2() {}
export class Clazz1 {}
class Clazz2 {}
//
import {prop1, func1} from './a';
(prop1);
func1(); // 调用模块中对外暴露的方法
一个模块既可以通过export对外暴露自己的属性和方法,也可以通过import引入其他模块的属性和方法
注解
注解为程序的元素(类、方法、变量)加上更直观明了的说明,这些说明信息与业务逻辑无关,而是供指定的工具或框架使用的。
类型定义文件(*.)
类型定义文件用来帮助开发者在TypeScript中使用已有的Js工具包,如jquery
工具: https://github.com/typings/typings
用来安装.d.ts文件