ts

1.安装与编译
npm install -g typescript
tsc helloworld.ts
2.数据类型

注:ts中定义变量必须指定类型,若不是any类型,后续重新赋值时改变类型则会报错

var flag:boolean=true
var num:number=1
var str:string="123"

// 数组定义的几种方式
var arr:number[]=[1,2,3]  // 数组中的元素都为数字类型
var arr:Array<number>=[1,2,3]  // 数组中的元素都为数字类型
var arr:[number,string]=[1,"1"]  // 为数组中指定位置的元素指定类型
var arr:any=[1,"1",false]  // 数组中元素为任意类型

枚举类型(enum)

enum Err {'undefined'=-1,null=-2,success=1}
var e:Err=Err.success
console.log(e) // 1

任意类型

var a:any=1
a="1" // 当指定为任意类型时,后续可赋值为任意类型

undefined和null

var a:undefined // 定义未赋值时  可定义为undefined
var a:number | undefined | null // 定义为数字或undefined或null

var a:null
a=null // 定义为空时,赋值null

void类型

// 方法没有返回值
function a():void{
  console.log("a")
}

函数

// 指定参数类型和返回值类型
functin info(name:string, age:number):string {
  return "字符串"
}
// 没有返回值的方法
functin info():void {
  console.log('没有return')
}
// 可选参数
functin info(name:string, age?:number):string {  // age可传可不传,可选参数必须放在后面
  return "字符串"
}
// 默认参数
functin info(name:string, age:number=20):string {  // age不传时默认为20
  return "字符串"
}
类和继承
1.类的实现
class Person{
  public name: string
  constructor (n:string) {
    this.name = n
  }
  run():viod {
    cosnole.log("run")
  }
}

//等价于
function Person(name) {
  this.name = name
  this.run = function() {
    cosnole.log("run")
  }
}
2.继承 (extends、super)// 子类和父类有相同方法时 调用子类方法
class Web extends Person {
  constructor (name:string) {
    super(name)
  }
}
var w=new Web('张三')
w.run()
3.类的修饰符

public:公有类型 在类、子类、类外面都可以访问
protected:保护类型 在类、子类可以访问
private:私有类型 只能在子类使用

4.实例方法和静态方法
class Person{
  public name: string
  static age=20
  constructor (n:string) {
    this.name = n
  }
  run1():viod {    // 实例方法
    cosnole.log("run1")
  }
  static run2():viod {    // 静态方法
    cosnole.log("run2"+Person.age )    // 静态方法中调用静态属性
  }
}
var a=new Person('aa')
a.run1()  // 实例方法调用

Person.run2() // 静态方法调用
4.抽象方法
abstract class Person{
  public name: string
  static age=20
  constructor (n:string) {
    this.name = n;
  }
  run1():viod {    // 实例方法
    cosnole.log("run1")
  }
  abstract run2():any;  // 抽象方法必须放在抽象类中,且在继承类中具体实现
}
5.1函数类型接口
// 传入参数类型和返回类型必须与定义类型一致
interface encrypt{ // 定义函数接口
  (key:string,value:string):String
}
var md5:encrypt = function(key:string,value:string):string{
  return key+value
}
5.2索引类型接口
// 传入参数类型和返回类型必须与定义类型一致
interace userArr = {
  [index:number]:string
}
var arr:userArr=['aaa','bbb']
5.3类类型接口
// 定义类实现接口类型
interface Animal {
  name: string;
  eat(str:string):void
}
class Dog implements Animal{ //dog类实现Animal接口
  name:string;
  constructor(name:string){
    this.name=name
  }
  eat(){
    console.log(this.name)
  }
}
6.接口继承
interface Animal { // 定义类接口
  eat():viod;
}
interface Person extends Animal {  // 接口Person继承Animal
  work():viod;
}
class web implements Person{ //dog类实现Person接口和Animal接口
  name:string;
  constructor(name:string){
    this.name=name
  }
  eat(){
    console.log(this.name)
  }
  work(){
    console.log(this.name)
  }
}
7.泛型
7.1 范型类
class Minclas<T> {
  public list:T[] = [];
  add(value:T):void{
    this.list.push(value)
  }
  min():T{
    var min = this.list[0];
    for(var i=0; i< this.list.length;i++){
      if(min > this.list[i]){
        min = this.list[i]
      }
    }
    return min
  }
}
var m = new Minclas<number>() // 实例化类,并指定T的类型是number
7.2 范型接口
interface configFn{
  <T>(value:T):T;
}
var getData:configFn=function<T>(value:T):T{
  return value;
}
getData<string>('aaa') // 实例化接口,并指定传入参数类型是字符串
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,707评论 2 9
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,757评论 1 10
  • 前言:请先熟悉ES6,包括其中的import、export、class等。ts特性右转百度,只讨论入门语法,语法方...
    codeflame阅读 3,663评论 1 3
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,607评论 0 11
  • 《我是如何月入十万的》、《你和大神之间只差这几个APP》、《我是如何靠写作赚钱》类似这样的干货文章我相信大家不管是...
    克果阅读 196评论 2 3