typescript 文件閱讀筆記 Classes

2021-10-12 16:31:22 字數 4658 閱讀 8736

extendssuper

class

animal

move

(distanceinmeters: number =0)

m.`);}

}class

dogextends

animal

bark()

}const dog =

newdog

('fjdsl'

)dog.

bark

()

預設情況下,所有屬性為public

class

animal

public

move

(distanceinmeters: number)

moved

$m.`);

}}

只能在類的內部訪問,子類不能訪問

class

animal

}new

animal

("cat"

).name;

// 外部訪問不了,會報錯

typescript是一種結構型別系統。當我們比較兩種不同型別時,無論它們來自何處,如果所有成員的型別都是相容的,那麼我們就說這些型別本身是相容的。

但是對於privateprotected的比較會有所不同。他們的必須**於同乙個地方。

class

animal

}class

rhino

extends

animal

}class

employee

}let animal =

newanimal

("goat");

let rhino =

newrhino()

;let employee =

newemployee

("bob");

animal = rhino;

animal = employee;

rhino 的 私有成員 name 跟 animal **是一樣的,都是 animal 內部宣告的,所以 rhino 的例項可以賦值給 animal 的例項。但是對於 employee 它的私有成員是自己另外宣告的,**不同,所以 employee 的型別跟 animal 不一樣,所以後者的例項不能賦值給前者。

private差不多,但是子類能夠訪問該屬性

class

person

}class

employee

extends

person

public

getelevatorpitch()

and i work in $.`

;}}let howard =

newemployee

("howard"

,"sales");

console.

log(howard.

getelevatorpitch()

);console.

log(howard.name)

;// error property 'name' is protected and only accessible within class 'person' and its subclasses

可以給 constructor 宣告privateprotected

class

person

}// employee can extend person

class

employee

extends

person

public

getelevatorpitch()

and i work in $.`

;}}let howard =

newemployee

("howard"

,"sales");

let john =

newperson

("john"

);

您可以使用readonly關鍵字將屬性設定為唯讀。唯讀屬性必須在其宣告或建構函式中進行初始化。

class

octopus

}

幫我們簡化宣告了屬性之後,又在建構函式中對其進行複製的過程。支援的修飾符有publicprivateprotectedreadonly

class

person

}const person =

newperson

('***',11

,21)

給某個成員設定getters/setters。如果只設定 getter 相當於readonly

class

employee

setfullname

(newname: string)

this

._fullname = newname;

}}

class

grid

;calculatedistancefromorigin

(point:

)constructor

(public scale: number)

}let grid1 =

newgrid

(1.0);

// 1x scale

let grid2 =

newgrid

(5.0);

// 5x scale

grid.origin =

console.

log(grid1.

calculatedistancefromorigin()

);console.

log(grid2.

calculatedistancefromorigin()

);

abstract class

department

printname()

:void

abstract printmeeting()

:void

;// must be implemented in derived classes

}class

accountingdepartment

extends

department

printmeeting()

:void

generatereports()

:void

}let department: department;

// ok to create a reference to an abstract type

department =

newdepartment()

;// error: cannot create an instance of an abstract class

department =

newaccountingdepartment()

;// ok to create and assign a non-abstract subclass

department.

printname()

;department.

printmeeting()

;department.

generatereports()

;// error: property 'generatereports' does not exist on type 'department'

class

greeter

greet()

}let greeter: greeter;

// greeter 當做型別使用

greeter =

newgreeter

("world");

// 型別匹配

let gree:

typeof greeter =

newgreeter

("word"

)// error:前者包括了靜態型別,後者為例項型別不包括靜態型別

let newgree:

typeof greeter = greeter // newgree 跟 greeter 一模一樣

因為前面說過,建立 class 時會建立乙個代表該 class 例項的型別,所以 class 可以當做型別,也可以被 inte***ce 繼承

class

point

inte***ce

point3d

extends

point

let point3d: point3d =

;

typescript 文件筆記 Enums

enum direction let a directionenum direction數字型別跟字串型別的列舉可以混用。同事列舉的值可以是動態計算出來的,可以不是常量 列舉實際上市物件,所以可以當做值使用 enum enum 轉換後 function enum enum enum 訪問 enum ...

閱讀筆記 TypeScript菜鳥教程

1.概述 型別註解 介面和類 2.基礎型別 let arr any 1,a true let arr number 1,2 let arr array 1,2 let x string,number x point 122 列舉enum enum color let c color color.bl...

sphinx sphinxTrain文件筆記

基於單詞的模型訓練方法 1 定義的phoneset改為單詞列表 2 詞典中的map,是單詞指向它本身 而如果訓練基於音素的,要保證每個連線狀態有充足的例子 5 10個的例子 半連續 semi continue模型的訓練 訓練 每個hmm模型要求5個狀態,對10000個triphone的模型,要求如下...