TypeScript学习笔记二 -- 类、接口、模块

class Person {
    name;
    eat() {
        console.log('im eating');
    }
}
var p1 = new Person();   // 类的实例化
p1.name = 'batman';
p1.eat();   // 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方法声明为私有方法,外部不能调用
        console.log('im working');
    }
}
// super关键字用来调用父类的构造函数
var el = new Employee('name', '1');

var el2 = new Employee('dby', '234');
el2.work();
// im eating
// im working

el2.doWork(); // 报错,外部不能访问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() {
        console.log('sheep实现animal接口');
    }
}

==note: 当一个类实现一个接口时必须实现接口中声明的方法==


模块
模块将代码分割成可重用的单元,开发者可以自行决定将模块中的哪些资源(类、方法、变量)暴露出去供外部使用,哪些资源只在模块内部使用。
- export: 对外暴露

// a.ts
export var prop1;   // 对外暴露prop1属性
var prop2;  // 不对外暴露

export function func1() {}  // 对外暴露func1方法
function func2() {}

export class Clazz1 {}
class Clazz2 {}

// b.ts
import {prop1, func1} from './a';
console.log(prop1);
func1();      // 调用a.ts模块中对外暴露的方法

一个模块既可以通过export对外暴露自己的属性和方法,也可以通过import引入其他模块的属性和方法


注解
注解为程序的元素(类、方法、变量)加上更直观明了的说明,这些说明信息与业务逻辑无关,而是供指定的工具或框架使用的。
类型定义文件(*.d.ts)
类型定义文件用来帮助开发者在TypeScript中使用已有的Js工具包,如jquery

工具: https://github.com/typings/typings  
用来安装.d.ts文件
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值