extends
、super
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是一種結構型別系統。當我們比較兩種不同型別時,無論它們來自何處,如果所有成員的型別都是相容的,那麼我們就說這些型別本身是相容的。
但是對於private
、protected
的比較會有所不同。他們的必須**於同乙個地方。
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 宣告private
、protected
。
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
}
幫我們簡化宣告了屬性之後,又在建構函式中對其進行複製的過程。支援的修飾符有public
、private
、protected
、readonly
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的模型,要求如下...