# Type Script

ES是脚本语言的规划 JavaScript ES5 TypeScript ES6

学习TypeScript的好处

## 安装TypeScript开发环境

compiler 使用在线compiler开发 本地compiler npm node package manage 使用npm安装ts：npm install -g typescript 将ts文件编译为js文件：tsc hello.ts

## 字符串新特性

多行字符串 双撇号 \`\` 字符串模板 ${ } 只有在双撇号中才有用 自动拆分字符串

## TypeScript参数类型

* any string number boolean&#x20;
* void 用于声明返回值
* 自定义类型

用：赋类型

```typescript
var myname:string="xxx"



class Person{
    name:string;
    age:number;
}
```

TypeSctipt参数默认值

* 变量默认值
* 方法默认值

  &#x20; 带默认值的参数要放在最后

```typescript
function test(a:string,b:string,c:string="jojo"){
    console.log(a);
}

test("xxx")
```

可选参数 用问号设置参数为默认值 可选参数需要申明在必选参数之后

> 注意：使用可选时，要处理可选参数为空的情况

```typescript
function test(a:string,b?:string){

}
```

## Rest and Spread操作符

任意数量的参数 ...args

```typescript
function fun1(...args){
    args.foreach(function(arg){
        console.log(arg)
    })
}
```

## generator函数

手动暂停和恢复代码执行 TypeScript编译器： babel

```typescript
function* dosomething(){
    console.log("start")
    yield
    concole.log("finish")
}

var func1=doSomething()
func1.next()
```

析构表达式 用法一：从对象中取值 用{} 使用 别名 嵌套

```typescript
function getStock(){
    return{
        code:"IBM"
        price:100
        prices:{
            price1:200,
            price2：300
        }
    }
}
var{code,price}=getStock();
var{code:codex,price}=getStock();
var{code,price,prices:{price1}}=getStock();
console.log(code);
console.log(price);
```

用法二：从数组中取值 用\[]

```typescript
var [number1,bumber2,...others]=array1
```

用法三：当参数

## 箭头表达式

\=> 代替了function 用来声明匿名表达式，

javaScript this关键字

```typescript
var sum=(arg1,arg2)=>arg1+arg2;

var sum =()=>{

}

var sum=arg1=>{

}
```

for of 循环

```typescript
var myArray={1,2,3,4};
myArray.desc="four number"

myArray.forEach(value=>console.log(value))


//  n其实是key JavaScript
for(var n in myArray){
    console.log(n);
    console.log(myArray[n])
}

// 忽略属性 n是value
for(var n of myArray){
   if(n>2) break;
   console.log(n)
}
```

## 类

访问控制符 public private protested

```typescript
class Person{
name;

eat(){
    concole.log("")
}



}

class Employee extends Person{

}




var p1=new Person();
p1.name="batman";
p1.eat();
```

## 类型定义文件

\*.d.ts 在ts用js工具包

typings


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://moluo.gitbook.io/notes/bian-cheng-xue-xi/qian-duan/typescript.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
