# 任意值
任意值(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
let anyThing: any = 'Tom';
anyThing.setName('Jerry');
anyThing.setName('Jerry').sayHello();
anyThing.myName.setFirstName('Cat');
```
可以認為,**聲明一個變量為任意值之后,對它的任何操作,返回的內容的類型都是任意值**。
## 未聲明類型的變量
**變量如果在聲明的時候,未指定其類型,那么它會被識別為任意值類型**:
```ts
let something;
something = 'seven';
something = 7;
something.setName('Tom');
```
等價于
```ts
let something: any;
something = 'seven';
something = 7;
something.setName('Tom');
```
## 參考
- [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#任意值))
---
- [上一章:原始數據類型](primitive-data-types.md)
- [下一章:類型推論](type-inference.md)