前言

typescript是JavaScript的超集

  1. 命令行:
  2. npm i typescript -g(-g 全局安装)
  3. npm i ts-node -g
  1. 检查版本:
  2. tsc --version
  1. 项目启动:右键--run Code(插件:Code Runner)

基本概念

一、语言特点:

强类型语言,要声明类型。(支持所有的JavaScript语言 将.ts转变为.js —->终端—>tsc.xxx.ts

  1. //强类型语言,声明变量要指明其类型
  2. var str:string = "hello world"

二、数据类型

  1. 1.number,
  2. 2.string,
  3. 3.boolean
  4. 4.array
  5. 5.object
  6. 6.undefined
  7. 7.null
  8. 8.any
  9. 9.void
  1. //number,string,boolean
  2. var num:number= 10;
  3. var str:string = "hello world";
  4. var b:boolean = true
//Array
var arr:string [] = ['html','css','javascript']
var all:number [] = [ 1,2,3]
// object
var obj:object = {
    name:"lisi",
    age:14
}
//读取obj
//    console.log(obj['name'])
//    console.log(obj)
//声明一个数组,里面的元素是object
var list:object [] = [{name:"cheng",age:20},{name:"zhang",age:19}]

循环forEach

// 4.循环
arr.forEach(item=>{
    console.log(item)
})

2-1 枚举类型

// 枚举
enum Status {
    success = 200,
    fail = 404,
    serverError= 500
}
var s:Status = Status.success;
console.log(s);

2-2 any类型

//6. any 类型  指明数据类型为any后就不会类型检查了,数据可以改变成任意类型
var data:any = [1,2,3];
data = '3232';
data = 344345533;
console.log(data);

2-3 undefines类型 null类型

// undefined 类型
var a:undefined|number;
a = undefined;
a = 10;
// null 类型
var n:null|string;
n = "string"

2-4 void

//它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void
// void 没有返回值
function go():void{
console.log("hello world")
}
go()
function test():number{
console.log("a");
return  10;
}
test()

元组

 元组:给数组的每一个元素指明一个类型(了解)
// var lists:[number,string] = [12,'html']

三、函数

3-1 带参数的函数

function fn(name:string,age:number):number{
    console.log(name,age)
    return 10;
}
fn("cheng",10)

3-2 默认的参数

function fn(name:string,age:number=20):number{
    console.log(name,age)
    return 10;
}
fn("cheng")

3-3 可选参数

注意:可选参数放置最后

//设置可选参数之后,调用函数的时候,这个参数是可传可不传的
function fn(name:string,age?:number):number{
    console.log(name,age)
    return 10;
}
fn("cheng")

四、class

// private  私有的 作用范围只能类中
// public   共有的  其他类也可以访问
//不写变量修饰符  默认就是共有的
//person.ts
class Person {
    //类的一个属性
    name:string;
    age:number;
    constructor(name:string,age:number){
        this.name = name;
        this.age = age;
    }
    getName():void{
        console.log(this.name)
    }
}
export default Person;

继承:

import Person from './person'
// 继承 子类继承父类,子类的构造函数中第一行一定要加super
// 子类中调用父类的方法,this,super都可以调用
class Student extends Person {
    skill:string;
    constructor(name:string,age:number,skill:string){
        super(name,age);
        this.skill = skill;
    }
}
var s:Student = new Student("zhang",20,"lol");
console.log(s);
s.getName()

五、接口

// 接口  在面向对象的编程中,接口一中规范。定义了行为的规范,在程序设计中,
//接口起来了限制和规范的作用
interface Animal {
    eat():any;
    run():any;
}
// 实现一个接口必须对里面的方法重写
class Dog  implements Animal {
    eat():void{
        console.log("吃骨头")
    }
    run():void{
        console.log("狗跑")
    }
}