typescript

字符串新特性 (提高開發(fā)效率和代碼的辨識(shí)度)

  • 多行字符串(定界符)
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);
  • 自動(dòng)拆分字符串
    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() }`;

參數(shù)類型

如果一個(gè)變量被指定了類型,再給變量賦值的時(shí)候,編輯器會(huì)根據(jù)類型做一些檢查,減少開發(fā)時(shí)犯錯(cuò)誤的幾率。
這里的檢查是靜態(tài)類型檢查,只是在ts的編譯器中提示錯(cuò)誤,并不意味著編譯后的js代碼中的變量變成了強(qiáng)類型。

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

以下的情況,編譯器同樣是會(huì)報(bào)錯(cuò)。因?yàn)榫幾g器的類型推斷機(jī)制。在聲明一個(gè)新變量時(shí)會(huì)做類型檢查,確定變量的類型。

var myName = "MF";
myName = 13;

如果不想限制新聲明的變量的類型,可以用any關(guān)鍵字聲明變量。

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

ts 支持的基本類型包括

  • any
  • string
  • number
  • boolean
  • void (用于聲明函數(shù)的返回值)
  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;

默認(rèn)參數(shù)(在參數(shù)聲明的后面用等號(hào)指定參數(shù)的默認(rèn)值)

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'){
    //可選參數(shù)不可以聲明在必選參數(shù)的前面
    console.log(a);
    console.log(b);
    console.log(c);
}
foo2('aaa');

函數(shù)新特性

Rest and Spread 操作符(用來聲明任意數(shù)量的方法參數(shù))

function foo(...args){
    //可以傳入任意數(shù)量的參數(shù)  
    args.forEach( (arg) => console.log(arg) );
  }
  foo(1,2,3);
  //foo(4,5,6,7);

析構(gòu)表達(dá)式(通過表達(dá)式將對(duì)象或數(shù)組拆解成任意數(shù)量的變量)

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);
  //用析構(gòu)表達(dá)式從數(shù)組中取值
   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);
  //用析構(gòu)表達(dá)式拆分?jǐn)?shù)組作為函數(shù)的參數(shù)
   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 循環(huán)

  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);
  }

面向?qū)ο?/h2>

類的定義

class Person{
    //類的構(gòu)造函數(shù)(只在類被實(shí)例化時(shí)調(diào)用一次)
    constructor(public name:string){ }
   // 訪問控制符 public(默認(rèn)),
   // private ,
   // protected(可以在類的內(nèi)部和子類里被訪問 )
   //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 關(guān)鍵字用于調(diào)用父類的構(gòu)造函數(shù)
              super(name);
          }
          school;
          goSchool(){
              super.run();
              console.log(school);
          }
  }
 var c1 = new Child('yyy',0001121);  

接口

泛型

模塊化

外部庫(kù)的引用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • TypeScript簡(jiǎn)介: 微軟開發(fā) javascript的超集 遵循ES6腳本語言的規(guī)范 添加了遵循ES6的語...
    咖啡浮點(diǎn)閱讀 931評(píng)論 0 3
  • 字符串的新特性 多行字符串 使用``實(shí)現(xiàn)多行字符串 編譯成js代碼為: 字符串模板 其實(shí)和多行字符串差不多 編譯j...
    壹點(diǎn)微塵閱讀 414評(píng)論 0 2
  • Typescript是根據(jù)es6來擴(kuò)展的js 的超集。 字符串的特性有: 多行字符串: 字符串模版 可以使用$+大...
    a4316976150e閱讀 843評(píng)論 0 1
  • 今天上鬧鐘七點(diǎn)半起,七點(diǎn)半已經(jīng)清醒,室友洗漱,遂等至七點(diǎn)五十洗漱。早起算是成功,再接再厲。 早上起來感覺狀態(tài)不錯(cuò),...
    焦大仙閱讀 244評(píng)論 0 1
  • 春天:花開花落知多少 □巴山雪兒 放...
    巴山雪兒閱讀 363評(píng)論 0 1

友情鏈接更多精彩內(nèi)容