Type Script基礎入門紹介(三)の関数編

3888 ワード

紹介する
関数はJavaScriptアプリケーションの基本です.関数は抽象層,アナログ類,情報隠蔽およびモジュールを実現した.Type Scriptでは、クラス、名前空間、モジュールがサポートされていますが、関数はまだ主な定義行動の場所です.Type ScriptはJavaScript関数に追加されています.もっと使いやすいようにします.
JavaScriptでは、私たちは通常このように関数を定義します.
//      
function add(x, y) {
    return x+y;
}
//      
var add = function(x,y) { return x+y;  }
typeScriptの関数
関数の定義
関数のパラメータにタイプを追加して、関数自体にリターンタイプを追加できます.tsは返す語句によって自動的に返すタイプを割り出すことができます.したがって、私たちはしばしば省略します.
function add(x:number, y:number):number {
    return x+y;
}
var add = function(x:number, y:number):number { return x+y; }
オプションのパラメータとデフォルトのパラメータ
tsの各関数のパラメータは必須ですが、これはパラメータがnullまたはundefinedではなく、コンパイラがユーザが各パラメータに値が入っているかどうかを確認することを意味します.つまり、一つの関数に渡すパラメータの個数は、関数が期待するパラメータの個数と一致しなければなりません.
function fullName(firstName:string, lastName:string) {
    return firstName+lastName;
}
let a = fullName('bob');   //  error       
let b = fullName('bob', 'tom', 'mary');  //  error       
let c = fullName('bob', 'tom');   //  right
JavaScriptでは、各パラメータが選択されています.参加しなかった時の値はundefinedです.Type Scriptではパラメータ名のそばで使えますか?オプションパラメータの機能を実現します.例えば、lastNameをオプションにしたいです.
function fullName(firstName:string, lastName?:string) {
    if(lastName) {
        return firstName+lastName;
    }else {
        return firstName;
    }
}
let a = fullName('bob');   //  right now
let b = fullName('bob', 'tom', 'mary');  //  error       
let c = fullName('bob', 'tom');   //  right
オプションのパラメータは必要なパラメータの後ろに付いていなければなりません.上の例では、firstNameを選択したいなら、その位置を調整して、firstNameを後ろに置く必要があります.
tsにおいても、パラメータに対してデフォルト値を提供することができます.ユーザがこのパラメータに入っていないとき、またはundefinedに入ってきたとき、彼らはデフォルトの初期値のパラメータです.上記の例を修正します.lastNameはデフォルトでtomです.
function fullName(firstName:string, lastName='tom') {
    return firstName+'  ' +lastName;
}
let a = fullName('bob');   //  bob tom
let b = fullName('bob', 'tom', 'mary');  //  error       
let c = fullName('bob', undefined);   //  bob tom
let d = fullName('bob', 'mary');  //  bob mary
残りのパラメータ
必要な引数、デフォルトのパラメータとオプションのパラメータには共通点があります.それらはあるパラメータを表します.時々、複数のパラメータを同時に操作したいです.あるいはどれぐらいのパラメータが伝わってくるか分かりません.JavaScriptでは、argmentsを使用して、すべてのパラメータにアクセスできます.ES 6では、3点演算子を使用して、パラメータの伝達された値を受け取ります.複数のパラメータの和を計算します.
//  JS   
function sum(a,b,c,d) {
    return a+b+c+d;
}
//  ts         
function sum(a:number, ...b:number[]):number{
  var sum = 0;
  for(var i = 0; i < b.length; i++){
      sum+=b[i];
    }
    return sum;
}
//    js       4       ,   ts            
残りのパラメータは個数制限なしのオプションパラメータとして扱います.一つもなくてもいいです.同じでもいいです.
関数の再ロード
java中の方法の重荷重:重負荷とは2つ以上の同名の関数のことですが、それらのパラメータが違っています.この場合、関数が重負荷される場合があります.typescriptでの再負荷:同じ関数に複数の関数タイプの定義を提供することによって、様々な機能の目的を試してみます.s 5とs 6の重載を両立させるための書き方とjavaの違いがあります.
S 5に同名の関数が現れます.下の関数は上の関数に置き換えられます.
function css(config){}
function css(config,value){}
tsの中の重量
//  1
function getInfo(name:string):string;
function getInfo(age:number):string;
function getInfo(str:any):any{
  if(typeof str==='string'){
      return '  :'+str;
  }else{
      return '     '+str;
  }
}
alert(getInfo('  '));   //  
alert(getInfo(20));   //  
alert(getInfo(true));    //    

//   2
function getInfo(name:string):string;
function getInfo(name:string,age:number):string;
function getInfo(name:any,age?:any):any{
    if(age){
       return '  :'+name+'     '+age;
    }else{
      return '  :'+name;
   }
}
alert(getInfo('zhangsan'));  /*  */
alert(getInfo(123));    
alert(getInfo('zhangsan',20));
getInfo関数は、着信パラメータの種類に応じて異なる関数を実行します.前のType Script基礎入門(二)は主にtsの基本データタイプを紹介します.次のType Script基礎入門(四)は主にtsの種類とインターフェースを紹介します.