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`