一步一步學習TypeScript(08.隱式/顯示型別轉換)
阿新 • • 發佈:2019-01-10
implicit/explicit cast (隱式/顯示型別轉換)
- TypeScript中可以顯示錶明物件的型別 .
- 轉換一個型別到其它型別時可以使用
<>
符號, 如<T>value
. - any型別可以轉換成任意物件型別,反之亦然 .
看下面程式碼說明
class A{
run(){
console.log('run run run');
}
jump(){
console.log('jump jump jump');
}
}
class B{
run(): void{
console.log('slow run' );
}
cry(){
console.log('cry cry cry');
}
}
var a = new A(); //隱式轉換a的型別
var a1: A = new A(); //也可以顯示的表明a1的型別
var b = new B();
a = b; //錯誤, 型別B不能直接賦值給型別A, 因為在B中沒有定義jump方法
a = <A> b; //錯誤, ts中使用 `<>` 進行強制型別轉換 ,錯誤原因同上
var b1: any = new B(); //宣告為any型別 any型別可以轉成任意其它型別,反之亦然
a = b1; //OK
b1 = a; //OK
var b2: any = new B();
var newA = <A>b2; //把b2的B型別轉為A型別
newA.run(); //OK, 列印 slow run
newA.jump(); //編譯期間不會有問題, 但是執行期間會出現異常 `newA.jump is not a function`