Type Script初心-高級タイプ


結合タイプ
結合タイプは、1つの値が時間集中型の1つを表し、|を使用して各種類の行を分離する.
結合型の変数は、与えられた値において、類型推論の規則に基づいて、一つのタイプを推論します.
連合型の変数は、タイプが推測されると、通常宣言の変数と同じになります.
let ddd: string | number;
ddd = 'hello world';
// ddd      string,   length       
console.log(ddd.length);
ddd = 255;
//    ddd       number,   length        
console.log(ddd.length);
タイプの変数が推定されていない場合、この変数は、結合タイプのすべてのタイプの共有属性にのみアクセスできます.
function func(name: string, age: string | number) {
    // Error,Property 'length' does not exist on type 'string | number'.Property 'length' does not exist on type 'number'.
    console.log(age.length);
    //     
    console.log(age.toString());
}
クロスタイプ
クロスタイプは、複数のタイプを1つのタイプに統合することであり、クロスタイプの変数はすべてのタイプの属性、方法を有し、&を使用してタイプを統合する.
function extend(first: T, second: U): T & U {
    const result = {};
    for (let id in first) {
        (result)[id] = first[id];
    }
    for (let id in second) {
        if (!result.hasOwnProperty(id)) {
            (result)[id] = second[id];
        }
    }

    return result;
}

const x = extend({ a: 'hello' }, { b: 42 });

//    x     a     b   
const a = x.a;
const b = x.b;