typescript

字符串新特性 (提高开发效率和代码的辨识度)

  • 多行字符串(定界符)
var tmpData = {
       tmp_title : 'tmp_title',
       content : 'tmp_content',
};

var tmpFoo = function(){
    return 'tmp_content_two';
};

var tmp =`
      <section id="box-wrap">
          <h2>${tmpData.title}</h2>
          <div>
                  <p>${ tmpData.content }</p>
                  <p>${ tmpFoo() }</p>
         </div>
      </section>
`;
alert(tmp);
  • 自动拆分字符串
    var foo = function(template,name,age){
        console.log(template);
        console.log(name);
        console.log(age);       
    }

    const myName = "MF";
     var getAge = function(){
        return 99;
    };

    foo `My name is ${ myName }, I'm ${ getAge() }`;

参数类型

如果一个变量被指定了类型,再给变量赋值的时候,编辑器会根据类型做一些检查,减少开发时犯错误的几率。
这里的检查是静态类型检查,只是在ts的编译器中提示错误,并不意味着编译后的js代码中的变量变成了强类型。

var myName:string = "MF";
myName = 13;

以下的情况,编译器同样是会报错。因为编译器的类型推断机制。在声明一个新变量时会做类型检查,确定变量的类型。

var myName = "MF";
myName = 13;

如果不想限制新声明的变量的类型,可以用any关键字声明变量。

var myName:any = "MF";
myName = 13;

ts 支持的基本类型包括

  • any
  • string
  • number
  • boolean
  • void (用于声明函数的返回值)
  var foo1 = function(): void{
        return 'aaa';
  }

 var foo2 = function(): number{
        return 'aaa';
  }

var foo3 = function(arg:string): number{
    return 111;
}
foo3(12);

自定义类型

class Person{
    name: string;
    age:number;
}
var mf :Person =  new Person();
mf.name = 'mf';
mf.age = 99;

默认参数(在参数声明的后面用等号指定参数的默认值)

var foo1 = function(a:string,b:string,c:string='ccc'){
    console.log(a);
    console.log(b);
    console.log(c);
}
foo1('aaa','bbb');

var foo2 = function(a:string,b?:string,c:string='ccc'){
    //可选参数不可以声明在必选参数的前面
    console.log(a);
    console.log(b);
    console.log(c);
}
foo2('aaa');

函数新特性

Rest and Spread 操作符(用来声明任意数量的方法参数)

function foo(...args){
    //可以传入任意数量的参数  
    args.forEach( (arg) => console.log(arg) );
  }
  foo(1,2,3);
  //foo(4,5,6,7);

析构表达式(通过表达式将对象或数组拆解成任意数量的变量)

function getStock(){
    return {
        code: 'google',
        price:'100',
    }
}
var {code:codeX,price} = getStock();
console.log(codeX);
console.log(price);
function getStock(){
    return{
        code:'google',
        price: {
            price1:200,
            price2:400,
        }
    }
}
var {price:{ price2 } } = getStock();

console.log(price2);
  //用析构表达式从数组中取值
   var array = [0,1,2,3,4];
   var [num0,,num2] = array;
   console.log(num0);
   console.log(num2);

  //var [, , num2, , ...others] = array;
  //console.log(num2);
  //console.log(others);
  //用析构表达式拆分数组作为函数的参数
   var array = [0,1,2,3,4];
    function fn([num1,num2,...others]){
        console.log(num1);
        console.log(num2);
        console.log(others);
    }
    fn(array);

for of 循环

  var array = [0,1,2,3,4];

  //for Each
  array.forEach(i => console.log(i));

  //for of
  for(var i of array){
      if(i> 2) break;
      console.log(i)
  }

  //用for...of 拆分字符串
  for(var n of 'uniplaza'){
      console.log(n);
  }

面向对象

类的定义

class Person{
    //类的构造函数(只在类被实例化时调用一次)
    constructor(public name:string){ }
   // 访问控制符 public(默认),
   // private ,
   // protected(可以在类的内部和子类里被访问 )
   //name;
    run(){
        console.log('I'm running');
    }
}
var p1 = new Person();
p1.name = 'batman';
p1.run();

类的继承 ( extend ,supper)

  class Child extends Person{
          constructor(name:string,id:number){
              //super 关键字用于调用父类的构造函数
              super(name);
          }
          school;
          goSchool(){
              super.run();
              console.log(school);
          }
  }
 var c1 = new Child('yyy',0001121);  

接口

泛型

模块化

外部库的引用

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

推荐阅读更多精彩内容

  • TypeScript简介: 微软开发 javascript的超集 遵循ES6脚本语言的规范 添加了遵循ES6的语...
    咖啡浮点阅读 789评论 0 3
  • 字符串的新特性 多行字符串 使用``实现多行字符串 编译成js代码为: 字符串模板 其实和多行字符串差不多 编译j...
    壹点微尘阅读 329评论 0 2
  • Typescript是根据es6来扩展的js 的超集。 字符串的特性有: 多行字符串: 字符串模版 可以使用$+大...
    a4316976150e阅读 770评论 0 1
  • 今天上闹钟七点半起,七点半已经清醒,室友洗漱,遂等至七点五十洗漱。早起算是成功,再接再厉。 早上起来感觉状态不错,...
    焦大仙阅读 204评论 0 1
  • 春天:花开花落知多少 □巴山雪儿 放...
    巴山雪儿阅读 315评论 0 1