typescript學習筆記(二)--面向對象特性

一. 類的特性

這裏直接寫一些demo來實現ts裏的類並解釋一些小知識:

//實現一個類,並繼承它
class Person {
	// 構造方法,實例化之後自動調用,且一次實例化只調用一次
    constructor() {
        console.log(this.name);
    }
    //public  表示公共的,可在任何訪問
    public name = 'dahai'; // 等同於name;
    
    //protected 表示受保護的,在類的內部和子類中可以訪問
    protected age = 16;
    
    //private 表示私有的,只有在類的內部可以訪問
    private sex = '女'
    protected play() {
        console.log('xixi')
    }
}

// extends 繼承的關鍵字,繼承後的類有可以使用有權限的父類的所有屬性和方法
class Buy extends Person {
	// 繼承時要注意,如果子類也有構造函數,必須實現父類的構造函數,使用super來實現
	constructor (public code:number) {
		super();
		this.code = code;
	}
	 //super用法二,調用父類中的方法
    work ()  {
    	super.play()
    }
}
var b1 = new Buy(3);
console.log(b1.name)
b1.work();
var p1 = new Person();
console.log(p1.name);

構造函數的一些其他寫法

//這個類似於上面constructor寫法
class Person {
	//此處的public name: string不能簡寫爲name:string
	constructor(public name: string) {
        console.log(this.name);
    }
}
// 注意如果construtor中有參數時,new必須傳對應的參
var p1 = new Person('xiaolei');

二. 泛型

這篇文章寫的很清晰,大家看看哈
https://blog.csdn.net/jasnet_u/article/details/81144199

三. 接口

我自己理解的接口其實就是一種特殊的類,建立了某種代碼約定,使別的開發者在調用某個方法時必須遵循接口的代碼約定;但接口是不能實例化的,不過可以通過implements關鍵字來實現它。
下面來個簡單的demo瞭解一下interface

//這裏是類 類型的接口
interface Person {
    name: string
    age: number
    sex?: string
    //添加一個字符串索引簽名跳過額外屬性檢查
    [propName: string]: any;
	eat():void;
}

class Buy {
    constructor (public config:Person) {
		
	}
}
/*
*必傳參數:
	*這裏如果我們傳遞的參數不是name、age則ts報錯,少參數多參數都不行;這是ts的額外屬性檢查,要想跳過最好的方法是添加一個字符串索引簽名見上
*可選參數:sex後面加?,表示可選參數,可傳可不傳
var b1 = new Buy({
    name: 'dahai',
    age: 8
});

//實現person接口
class PeopleOne implements Person {
	name = 'dalei'
    age = 9
    eat(): void {    
        console.log(this.name)  
    }
}
var a1 = new PeopleOne;
a1.eat();

四. 模塊

模塊中這裏我主要記錄一下如何導入導出,這大家應該也都很熟悉了吧,這裏簡單寫一下,一起來看看哈。

//a.ts
export  var prop1;
export function func1 () {

}
export classs Clazz1 () {

}
//在需要使用的文件中,eg:b.ts
import {prop1, func1, Clazz1 } from './a.ts'
console.log(prop1)
func1()
new Clazz1 ()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章