# 基础类型

  • 布尔 boolean
let isDo:boolean = true
  • 数值 number
let num:number = 11
  • 字符串 string
let str:string = '码不停息'
  • 数组 number[] Array<number>
let arr1:number[] = [1,2,3]
let arr2:Array<number> = [1,2,3]
  • 元组 允许表示一个已知元素数量和类型的数组,各元素的类型不必相同 let x: [string, number];
let arr:[string,number,boolean] = ['码不停息',1,true]
  • 枚举 enum
    枚举成员不可修改,可以是常量,表达式,也可以是变量
enum People{
  name1,
  name2,
  name3
}
enum learn {
   a,
   b = 2,
   c = 1 + 3, //表达式
   e = '123'.length
}
  • 任意值 any 顾名思义 任意类型都可以
let a:any=4
  • 空值 void 当一个函数不返回任何东西时
  • null undefined

# 接口

interface List {
  readonly id:number;  // 只读  
  name?:string|number; //可有可无类型为 字符串或者数组
  data:number;  //类型为数组
  eat?():void;  //申明一个函数 , 该函数没法返回值
}
// 使用
 let s:List = {
   id:1,
   data:100,
   eat:()=>{
     console.log(1)
   }
 }
 a.id = 2 // 报错 , 不可更改

//  接口也可以继承
interface Shape {
    color: string;
}

interface PenStroke {
    penWidth: number;
}

interface Square extends Shape, PenStroke {
    sideLength: number;
}

let square = <Square>{};
square.color = "blue";
square.sideLength = 10;
square.penWidth = 5.0;

#

class Demo {
    name: string;
    constructor(name: string) {
        this.name = name
    }
    greet() {
        return this.name
    }
}
// 继承

class Demo2 extends Demo {
    age: number;
    constructor(name: string, age: number) {
        super(name);
        this.age = age;
    }
}

和ES6中类的写法几乎一样 就是加了类型

# 函数

# 标注类型

// 函数需要标注类型

function fn(x: number, y: number): number {
    return x + y
}

# 设置参数有无

// 可设置参数有无

function fn(x: number, y?: number): number {
    return x + y
} 

# 剩余参数


function buildName(firstName: string, ...restOfName: string[]) {
  return firstName + " " + restOfName.join(" ");
}
buildName("码","不","停","息")

# 泛型