2017-01-15 23:58:09 +08:00
|
|
|
|
# 任意值
|
2017-01-09 15:51:21 +08:00
|
|
|
|
|
|
|
|
|
|
任意值(Any)用来表示允许赋值为任意类型。
|
|
|
|
|
|
|
|
|
|
|
|
## 什么是任意值类型
|
|
|
|
|
|
|
|
|
|
|
|
如果是一个普通类型,在赋值过程中改变类型是不被允许的:
|
|
|
|
|
|
|
|
|
|
|
|
```ts
|
|
|
|
|
|
let myFavoriteNumber: string = 'seven';
|
|
|
|
|
|
myFavoriteNumber = 7;
|
|
|
|
|
|
|
|
|
|
|
|
// index.ts(2,1): error TS2322: Type 'number' is not assignable to type 'string'.
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
但如果是 `any` 类型,则允许被赋值为任意类型。
|
|
|
|
|
|
|
|
|
|
|
|
```ts
|
|
|
|
|
|
let myFavoriteNumber: any = 'seven';
|
|
|
|
|
|
myFavoriteNumber = 7;
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 任意值的属性和方法
|
|
|
|
|
|
|
|
|
|
|
|
在任意值上访问任何属性都是允许的:
|
|
|
|
|
|
|
|
|
|
|
|
```ts
|
|
|
|
|
|
let anyThing: any = 'hello';
|
|
|
|
|
|
console.log(anyThing.myName);
|
|
|
|
|
|
console.log(anyThing.myName.firstName);
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
也允许调用任何方法:
|
|
|
|
|
|
|
|
|
|
|
|
```ts
|
2017-11-01 11:28:58 +08:00
|
|
|
|
let anyThing: any = 'Tom';
|
|
|
|
|
|
anyThing.setName('Jerry');
|
|
|
|
|
|
anyThing.setName('Jerry').sayHello();
|
2017-01-09 15:51:21 +08:00
|
|
|
|
anyThing.myName.setFirstName('Cat');
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2017-01-16 22:51:11 +08:00
|
|
|
|
可以认为,**声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值**。
|
2017-01-09 15:51:21 +08:00
|
|
|
|
|
2017-01-10 20:05:25 +08:00
|
|
|
|
## 未声明类型的变量
|
|
|
|
|
|
|
2017-01-16 22:51:11 +08:00
|
|
|
|
**变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型**:
|
2017-01-10 20:05:25 +08:00
|
|
|
|
|
|
|
|
|
|
```ts
|
|
|
|
|
|
let something;
|
|
|
|
|
|
something = 'seven';
|
|
|
|
|
|
something = 7;
|
|
|
|
|
|
|
2017-11-01 11:28:58 +08:00
|
|
|
|
something.setName('Tom');
|
2017-01-10 20:05:25 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
等价于
|
|
|
|
|
|
|
|
|
|
|
|
```ts
|
|
|
|
|
|
let something: any;
|
|
|
|
|
|
something = 'seven';
|
|
|
|
|
|
something = 7;
|
|
|
|
|
|
|
2017-11-01 11:28:58 +08:00
|
|
|
|
something.setName('Tom');
|
2017-01-10 20:05:25 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 参考
|
2017-01-09 15:51:21 +08:00
|
|
|
|
|
2017-01-17 16:22:48 +08:00
|
|
|
|
- [Basic Types # Any](http://www.typescriptlang.org/docs/handbook/basic-types.html#any)([中文版](https://zhongsp.gitbooks.io/typescript-handbook/content/doc/handbook/Basic%20Types.html#任意值))
|