一步一步学习TypeScript(07.Any类型)

学习前先看一下 04章(严格的对象赋值检查),与之相对的只要为元素指定了any类型,则可以对其任意赋值:

// 代码回顾
var x: { foo: number };
x = { foo: 3 }
x = { foo: 1, baz: 2 };  // 错误, 初始化时没有指名有`baz`属性.

//或
var y = { foo: 3 }       // 隐含的类型指定 等价于var y:{foo:number} = {foo: 3}
y = { foo: 1, baz: 2 };  // 错误, 初始化时没有指名有`baz`属性.

在看如下代码

var x:any = { foo: 3 };
x = { foo:5, name:'h' };  // 正确, 因为x为any类型
x = { name:'h', just: true }; // 正确, 因为x可以是任何类型
x = {}; // 也没有问题

x = 'a string hhhhhhhhhh'; //可以改变为string类型

//可以声明为一个函数
x = function(){
    console.log('hello any!')
}

x(); // hello any!

多说一些关于any类型与Object类型的区别

class Blablabla {
   field: Object;  //Object
}

var my = function(bla: Blablabla){
    bla.field.comingMethod();  //错误, 属性comingMethod在Object不存在
}

//修改成any类型后
class Blablabla {
   field: any;  //any
}

var my = function(bla: Blablabla){
    bla.field.comingMethod();  //OK, 只有在运行时才会关心comingMethod方法是否真的存在.
}
//可以在运行时动态分配方法
var bla = new Blablabla();
bla.field = {
    comingMethod: function(){ console.log('hi any!'); }
    //lambda表达式写法: 
    //comingMethod: ()=> console.log('hi any!')
}

my(bla); // hi any!

详细看这编文章 any 与 Object 区别 http://stackoverflow.com/questions/18961203/typescript-any-vs-object

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值