typescript 入门教程一

从今天开始,持续更新typescript入门教程系列....

目前ts越来越火,主流的前端框架,好比angular,vue 3均是采用ts来编写,所有很多公司的项目都是用ts来写的,所有是时候认真学习ts
ts来源于微软公司,越是大的公司,越是大的项目,越是推荐使用ts来编码,ts是js的超集,在js上面增加一些内容,相对于js,ts具有以下的优点:

  • 支持面向对象方法,之前js实现面向对象是通过prototype,function实现的,有点繁琐。ts提供了Class,Interface
  • 类型检查。ts能够在编译的阶段就可以发现错误,减少bug率。在实际开发中,需要将ts编译成js,而且目前浏览器支持的是es5版本
  • 自带文档特性。通过类型注解,很容易知道某一个参数或者变量是什么类型
  • IDE或者是编辑工具支持良好(自动完成提示)

总的来说ts=js+type+(一些其他特性:枚举,接口等)
使用ts之前,首先需要安装node,安装好node之后会自带npm,npm是node包管理工具,其可以下载一些社区常用的包,我们通过npm来安装ts编译工具typescript , npm install typescript -g
编写一个ts文件:index.ts,通过下面命令行工作tsc index,.ts,就可以将index.ts编译成index.js,最后在浏览器中运行(ts是没法在浏览器中运行的,必须进行编译)

var a:number
a=10
console.log(a)

上面就是定义了a的变量类型是number类型,如果这时候传string类型赋值给a,编译器就会保存
数据类型主要有:

  • number,string,boolean,Array

示例,定义数组有两种方法:

let myArr1:string[]=["st1","st2"]
let myArr2:Array<string>=["st1","st2"]

也可以给函数参数添加类型限制,这时如果传入的参数个数和类型和定义的形参不匹配,编译时候就会报错:

const add=(a:number,b:number)=>{
    return a+b
}
console.log(add(2,4))

也可以为函数返回值添加类型

const add=(a:number,b:number):number=>{
    return a+b
}

也可以给函数加上默认的参数,如果函数的返回值是空,可以设置返回值类型是void

const add=(a:number=8,b:number=10):void=>{
    console.log(a+b)
}

也可以设置可选参数,如下:这时候b可以传可以不传

const add=(a:number=8,b?:number):void=>{ 
    console.log(a+b)
}

如果需要将一个变量设置为任何类型。可以使用any,但是尽量少用any

let a:any;
a=10;
a="str"
a=[1,2,3]

如果需要设置一个变量为两种或者更多类型,可以使用联合类型的方式,|

let a:number | string

很多语言具有面向对象的属性,包括ts,面向对象三大属性:封装,继承,多态了,可以将现实生活中的一切内容看成类或者对象一个Class,通过new()得到一个对象,一个对象有属性和方法(方法就是对属性进行操作)

class Person{
    // 构造方法
    constructor(fn:string,ln:string){
        this.firstName=fn
        this.lastName=ln
    }
    firstName:string;
    lastName:string;
 }

通过extends关键字,可以让一个类继承已有类的属性和方法:

class Person{
    firstName:string
    lastName:string
 }
 class Programmer extends Person{
 }
 let p=new Programmer()
 p.firstName='jack'
 p.lastName='chen'
 console.log(p)

子类如果调用某个方法,如果在子类中已有该方法,则直接调用该方法,如果没有,则去调用父类的方法,如果强制调用父类的方法,可以把this换成super
类成员的可见性主要有public,private,protected
public:在类中和类的外面均是可以调用,默认就是public
private:只能在类中调用,子类和类外面是不能调用的,如果要调用私有的属性或者方法,可以通过公有的方法来访问,对外暴露公有的方法,子类也是可以继承父类的私有的方法和属性,但是必须通过父类暴露的公有方法进行访问
protected:只能在类中或者是子类中调用 ,即使子类和父类生成的对象也是不能访问
总的来说权限范围:public>protected>private
未完待续。。。


<center>如果觉得本文有收获,请我喝杯咖啡吧,你们的支持是我最大的动力 </center>
<div align=center><img width = '100' height ='150' src ="https://graph.baidu.com/resource/212f2cd5fea74c832764b01572346781.png"/></div>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容