typescript入門から現在までのまとめ2


まとめてみました.ほとんどのtsのものをまとめました.このまとめ2は主に汎型です.団子はこの部分に対してはまだはっきりしないですが、自分の理解を話してください.皆さんの助けになりたいです.

/**
 * x        ,             ,      any,      
 * @param x 
 */
// function fn(x: number): number {
//     return x * 10;
// }

// fn(10);
// fn('10');


/**
 *   
 *      ,      ,        
 * 
 *    ,                  
 *  ,           ,   T,E...
 *       ,      ,     
 */
// function fn(x: T): number {
//     return Number(x) * 10;
// }

//fn(1);  //   fn     ,   T  number
// fn(1);

// fn(1);  //    

// function fn(x) {
//     return x * 10;
// }

// let a = fn(1);
// let b = fn(2);


// function fn(...args) {
//     let arr: number[] = [];
//     for (let i=0; i(arg1: T, arg2: S): [T,S]{
//     return [arg1, arg2];
// }

// let a = fn('a', 1);



// function fn(arg: T[]): T[]{
//     return arg;
// }

// fn( ['1','2'] );
// fn( [1,2] );

// let arr: number[] = [];
// let arr2: Array = [];

汎型のクラス
class MyArray  {

    private _data: T[] = [];

    constructor() {

    }

    public mypush(v: T): number {
        this._data.push(v);
        return this._data.length;
    }

}

//   arr        ,   T  string
let arr: MyArray = new MyArray();
arr.mypush('1');

//   arr        ,   T  number
let arr2: MyArray = new MyArray();
arr2.mypush(1);


// let a: Array = [1,2,'1'];




// // interface Person {
// //     [attr: string]: any
// // }
// class Person {

//     constructor(public username: string, public age: number) {

//     }

// }

// // // // Person =>     Person         
// // let p1: Person = new Person('Kimoo', 30);



// // function SuperMan(obj: Person) {
// //     obj.fly = function() {
// //         console.log('fly');
// //     }
// // }


// // function getPersonObj(constructor: Person) {//                 
// //     // Person            ,      Person     ,      
// //     // return new constructor();
// //     return new constructor();
// // }

// // getPersonObj( Person  );

// // function getArray(constructor: {new(): Array}) {   // {new()}                
// //     return new constructor();
// // }

// // getArray( Array  );


// // Person    
// // let a: Person;
// // let fn1: {new (): Person};



// // interface Window { 
// //     [attr: string]: any
// // }


// // window.miaov = 1;

汎型制約
// // function fn(a: T) {
// //     a.querySelector('div');
// // }

// interface Len {
//     length: number
// }

// function fn(a: T) {
//     //         length
//     a.length
// }

// fn('1');