了解TypeScript中的泛型約束功能

了解TypeScript中的泛型約束功能

TypeScript 泛型(generics)的泛型約束

TypeScript 泛型(generics)是一種強大的工具,可以讓我們在編寫程式時更加彈性,可以讓我們在不改變程式碼的情況下,對程式碼的型別進行更多的控制。在 TypeScript 中,我們可以使用泛型約束來更加精確地控制我們的程式碼,讓我們可以更容易地撰寫出更健壯的程式碼。

泛型約束是一種技術,可以讓我們在使用泛型時,更加精確地控制我們的程式碼。它可以讓我們指定泛型的型別,並且可以指定泛型的型別必須符合某個接口或類別的要求。

舉個例子,假設我們有一個函式,可以接受一個參數,並且參數必須是一個物件,並且物件必須有一個名為 name 的屬性:

function logName<T>(obj: T) {
    console.log(obj.name);
}

這樣的函式可以接受任何型別的參數,但是如果參數沒有 name 屬性,就會報錯。

為了解決這個問題,我們可以使用泛型約束,指定參數必須是一個特定的型別,並且必須有 name 屬性:

function logName<T extends { name: string }>(obj: T) {
    console.log(obj.name);
}

這樣,我們就可以確保參數一定有 name 屬性,並且型別也是正確的,因此可以避免出現報錯的情況。

另外,我們也可以使用泛型約束來指定泛型必須符合某個接口或類別的要求:

interface HasName {
    name: string;
}

function logName<T extends HasName>(obj: T) {
    console.log(obj.name);
}

這樣,我們就可以確保參數必須是一個符合 HasName 接口的物件,因此可以避免出現報錯的情況。

總結來說,TypeScript 泛型約束是一種強大的工具,可以讓我們在使用泛型時更加精確地控制我們的程式碼,讓我們可以更容易地撰寫出更健壯的程式碼。

推薦閱讀文章

推薦閱讀文章

            <a href="https://www.tutorialsteacher.com/typescript/typescript-generics">Typescript Generics</a><br>
            <a href="https://www.typescriptlang.org/docs/handbook/generics.html">Typescript Generics Handbook</a><br>
            <a href="https://www.sitepoint.com/typescript-generics-explained/">Typescript Generics Explained</a><br>
            <a href="https://www.freecodecamp.org/news/typescript-generics-explained-in-plain-english/">Typescript Generics Explained in Plain English</a><br>
            <a href="https://www.educba.com/typescript-generics/">Typescript Generics Explained with Examples</a

延伸閱讀本站文章

更多TypeScript相關文章

推薦學習youtube影片

發佈留言