前言
typescript是JavaScript的超集
命令行:
npm i typescript -g(-g 全局安装)
npm i ts-node -g
检查版本:
tsc --version
项目启动:右键--run Code(插件:Code Runner)
基本概念
一、语言特点:
强类型语言,要声明类型。(支持所有的JavaScript语言 将.ts转变为.js —->终端—>tsc.xxx.ts
//强类型语言,声明变量要指明其类型
var str:string = "hello world"
二、数据类型
1.number,
2.string,
3.boolean
4.array
5.object
6.undefined
7.null
8.any
9.void
//number,string,boolean
var num:number= 10;
var str:string = "hello world";
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("狗跑")
}
}