使用介面強制執行型別
Typescript 的核心優勢之一是它可以強制執行你傳遞程式碼的值的資料型別,以幫助防止出錯。
假設你正在製作寵物約會應用程式。
你有這個簡單的功能,檢查兩隻寵物是否相互相容……
checkCompatible(petOne, petTwo) {
if (petOne.species === petTwo.species &&
Math.abs(petOne.age - petTwo.age) <= 5) {
return true;
}
}
這是完全功能性的程式碼,但對於某人,特別是那些沒有編寫此功能的應用程式的人來說,他們應該不知道他們應該通過物種和年齡來傳遞物件,這太容易了。屬性。他們可能會錯誤地嘗試 checkCompatible(petOne.species, petTwo.species)
然後留下來找出函式試圖訪問 petOne.species.species 或 petOne.species.age 時丟擲的錯誤!
我們可以防止這種情況發生的一種方法是在 pet 引數上指定我們想要的屬性:
checkCompatible(petOne: {species: string, age: number}, petTwo: {species: string, age: number}) {
//...
}
在這種情況下,Typescript 將確保傳遞給函式的所有內容都具有種類和年齡屬性(如果它們具有其他屬性,則可以),但這是一個笨拙的解決方案,即使只指定了兩個屬性。有了介面,有更好的方法!
首先我們定義我們的介面:
interface Pet {
species: string;
age: number;
//We can add more properties if we choose.
}
現在我們所要做的就是將引數的型別指定為我們的新介面,就像這樣……
checkCompatible(petOne: Pet, petTwo: Pet) {
//...
}
…和 Typescript 將確保傳遞給我們函式的引數包含 Pet 介面中指定的屬性!