1、介面
1.物件中使用中括號是設定key的型別是字串,冒號后面就是鍵值對的值;
2.介面只是用來形容給進來的資料必須符合介面型別內容,所以不能賦值;
export default interface IBox{
a:number;
b:string;
[key:string]:number |string|boolen|null;
}
3.只讀屬性
interface ILable { lable:string; a?:number; readonly b:number //只讀 } //使用 function fn1(obj:ILable){ } function fn2(o:ILable){ o.lable="ss" } fn2({lable:"s",b:3})
4.類介面
-
可實作多個介面,介面實作的東西,在類中不能缺少任何一個;
-
類實作介面使用implements;
-
都具備IB型別,所以陣列的型別可以 為這共有的;
-
沒有介面,就沒有多型
-
建構式不能寫回傳型別,建構式可以使用私有型別,但是使用后,則不能在外部實體化
-
set方法不能寫回傳型別
-
get方法不能寫引數;
export interface ID{ run():void; } export interface IE{ new (a:number):ID } function fn(className:IE):ID { return new className(3) } var o=fn(Boss)
5.有關介面繼承
-
宣告一個介面,在宣告另一個介面繼承上個介面;讓一個類繼承上述一個介面,此時;
-
這個類中必須包含上述兩個介面的所有屬性和方法
interface IF //介面 { num:number } interface IG extends IF //介面繼承介面 { walk():void } class Goods implements IG{ num :number=1 walk():void{ } }
6.介面繼承類
-
給一個類宣告且賦予方法,讓一個介面繼承這個類,這個介面中可以不包含上個類的屬性和方法;
-
再讓另一個類繼承這個介面,此時,這個類中必須含有上述介面和類中的所有方法
class Zoom{ num:number=1; play():void{ console.log("play") } } interface IH extends Zoom{ run():void; } class Zooms implements IH{ num: number=2; run(): void { } play(): void { } }
2、三大修飾符
1、public 公有的
- 只有共有的實體物件才能呼叫該方法和屬性(暴露在外),在子類中可以呼叫獲取覆寫
- 該類的實體化物件可以呼叫public定義的屬性和方法(包括靜態.只讀)
- 子類中的方法中可以通過實體this呼叫獲取peotected定義的屬性和方法(包括靜態和只讀)
- 子類中可以重寫和覆寫public定義的方法(靜態)
2、private 私有的
- 只能當前類中呼叫執行(建構式可以使用private,但是使用后,則不能再外部實體化,也就是不能new ===》單例模式采用);
- 該類的實體化物件不能呼叫private定義的屬性和方法(包括靜態,只讀)
- 子類的方法中不可以獲取private定義的屬性和方法(靜態和只讀)
- 子類中不可以重寫和覆寫private定義的方法;
- 只能在當前類的方法中呼叫使用private定義的屬性和方法;
3、protected 受保護的
- 在子類中可以呼叫獲取覆寫;繼承后的類可以通過在類中方法表示當前呼叫的實體化物件獲取父類的共有和受保護的方法;
- 該類的實體化物件不能呼叫protected定義的屬性和方法(包括靜態,只讀)
- 子類的方法中可以通過實體this呼叫獲取protected定義的屬性和方法;
- 子類中可以重寫和覆寫使用protected定義的方法(靜態)
4、注意點:在繼承類中,如果要覆寫或者修改父類的方法時,必須要使用public 或者 protected;只有這兩者才會被子類所呼叫;
3.靜態方法、常量
1.靜態常量
public static readonly SPEED:number=2; //readonly在static的后面
2.靜態方法
public static NUM:number=3; //在實體化呼叫時只能使用該類呼叫 rect.NUM();
4、泛型
1、實體
-
實體化以后的型別就是T型別
-
當使用create <T>時,傳入地是一個類名,給的是一個類比如 createB(); ,而不是實體化物件,(傳類的寫法)
-
以后傳參有兩種,一種是傳入類,一種是傳入實體化物件
function create<T>(cls:{new():T}){ var a:T=new cls(); console.log(a); } create<IB>(IB) // 傳實體化物件寫法 function createItem<T>(item:T){ } //當使用這個實體化物件時,這兒只能傳入實體化物件 比如 createItem<B>(new B()) var n=new IB(); createItem<IB>(b)
2、泛型類
在類中使用泛型,也就是通過將類設定成為IC的泛型,這樣就可以去得到他們的類
//宣告一個IA類 export default class IA{ constructor(){ } public run():void{ console.log("AAA"); } } //宣告一個IB類 export default class IB{ constructor(){ } public play():void{ console.log("BBB"); } } //在IC類中使用泛型 通過對IC設定泛型,在實體IC的時候,泛型使用IA和IB型別 export default class IC<T>{ constructor(){ } public run(item:T):void{ console.log(item); } } //實體 var c:IC<IA>=new IC(); c.run(new IA()); var c1:IC<IB>=new IC(); c1.run(new IB());
5、附加配置
#### 1.前端配置 ```javascript "target": "es5", "lib": ["ES2016","DOM"], "experimentalDecorators": true, "module": "amd", "rootDir": "./src", "declaration": true, "declarationMap": true, "sourceMap": true, "outDir": "./dist/js" "downlevelIteration": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strict": true, ``` #### 2.服務端配置 ``` "target": "es5", "lib": ["ES2015","DOM"], "experimentalDecorators": true, "module": "commonjs", ```
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/457061.html
標籤:其他
上一篇:為博客園開發了一套腳手架及模板——實時預覽頁面定制效果
下一篇:天津小廠前端2021年度總結
