TypeScript 泛型相容

admin發表於2019-03-13

TypeScript是結構性的型別系統,泛型的型別引數影響資料的成員。

程式碼例項如下:

[typescript] 純文字檢視 複製程式碼
interface Empty<T> {
}
let obj:Empty<number>={};

為泛型傳遞型別引數number,但是並沒有真正使用,所以對資料沒有什麼影響。

再來看一段程式碼例項:

[typescript] 純文字檢視 複製程式碼
interface Empty<T> {
}
let x: Empty<number>;
let y: Empty<string>={};

x = y;

由於上面的原因,所以賦值會成功。

如果沒有指定泛型型別的泛型引數,會把所有泛型引數當成Any型別比較,程式碼例項如下:

[typescript] 純文字檢視 複製程式碼
let identity = function<T>(x: T) {
    // code
}

let reverse = function<U>(y: U) {
    // code
}

identity = reverse;

程式碼中,泛型引數型別都會被當做Any型別。

相關文章