# Hello TypeScript
我們從一個簡單的例子開始。
將以下代碼復制到 `hello.ts` 中:
```ts
function sayHello(person: string) {
return 'Hello, ' + person;
}
let user = 'Tom';
console.log(sayHello(user));
```
然后執行
```bash
tsc hello.ts
```
這時候會生成一個編譯好的文件 `hello.js`:
```js
function sayHello(person) {
return 'Hello, ' + person;
}
var user = 'Tom';
console.log(sayHello(user));
```
TypeScript 中,使用 `:` 指定變量的類型,`:` 的前后有沒有空格都可以。
上述例子中,我們用 `:` 指定 `person` 參數類型為 `string`。但是編譯為 js 之后,并沒有什么檢查的代碼被插入進來。
**TypeScript 只會進行靜態檢查,如果發現有錯誤,編譯的時候就會報錯。**
> `let` 是 ES6 中的關鍵字,和 `var` 類似,用于定義一個局部變量,可以參閱 [let 和 const 命令](http://es6.ruanyifeng.com/#docs/let)。
下面嘗試把這段代碼編譯一下:
```ts
function sayHello(person: string) {
return 'Hello, ' + person;
}
let user = [0, 1, 2];
console.log(sayHello(user));
```
編輯器中會提示錯誤,編譯的時候也會出錯:
```bash
index.ts(6,22): error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'.
```
但是還是生成了 js 文件:
```js
function sayHello(person) {
return 'Hello, ' + person;
}
var user = [0, 1, 2];
console.log(sayHello(user));
```
**TypeScript 編譯的時候即使報錯了,還是會生成編譯結果**,我們仍然可以使用這個編譯之后的文件。
如果要在報錯的時候終止 js 文件的生成,可以在 `tsconfig.json` 中配置 `noEmitOnError` 即可。關于 `tsconfig.json`,請參閱[官方手冊](http://www.typescriptlang.org/docs/handbook/tsconfig-json.html)([中文版](https://zhongsp.gitbooks.io/typescript-handbook/content/doc/handbook/tsconfig.json.html))。
---
- [上一章:安裝 TypeScript](get-typescript.md)
- [下一章:基礎](../basics/README.md)