聯合型別- TypeScript 新手指南

文章推薦指數: 80 %
投票人數:10人

聯合型別(Union Types)表示取值可以為多種型別中的一種。

簡單的例子. TypeScript新手指南Search…TypeScript新手指南前言簡介基礎原始資料型別任意值型別推論聯合型別物件的型別——介面陣列的型別函式的型別型別斷言宣告檔案內建物件進階工程感謝PoweredByGitBook聯合型別聯合型別(UnionTypes)表示取值可以為多種型別中的一種。

簡單的例子1letmyFavoriteNumber:string|number;2myFavoriteNumber='seven';3myFavoriteNumber=7;Copied!1letmyFavoriteNumber:string|number;2myFavoriteNumber=true;3​4//index.ts(2,1):errorTS2322:Type'boolean'isnotassignabletotype'string|number'.5//Type'boolean'isnotassignabletotype'number'.Copied!聯合型別使用|分隔每個型別。

這裡的letmyFavoriteNumber:string|number的含義是,允許myFavoriteNumber的型別是string或者number,但是不能是其他型別。

存取聯合型別的屬性或方法當TypeScript不確定一個聯合型別的變數到底是哪個型別的時候,我們只能存取此聯合型別的所有型別裡共有的屬性或方法:1functiongetLength(something:string|number):number{2returnsomething.length;3}4​5//index.ts(2,22):errorTS2339:Property'length'doesnotexistontype'string|number'.6//Property'length'doesnotexistontype'number'.Copied!上例中,length不是string和number的共有屬性,所以會報錯。

存取string和number的共同屬性是沒問題的:1functiongetString(something:string|number):string{2returnsomething.toString();3}Copied!聯合型別的變數在被賦值的時候,會根據型別推論的規則推斷出一個型別:1letmyFavoriteNumber:string|number;2myFavoriteNumber='seven';3console.log(myFavoriteNumber.length);//54myFavoriteNumber=7;5console.log(myFavoriteNumber.length);//編譯時報錯6​7//index.ts(5,30):errorTS2339:Property'length'doesnotexistontype'number'.Copied!上例中,第二行的myFavoriteNumber被推斷成了string,存取它的length屬性不會報錯。

而第四行的myFavoriteNumber被推斷成了number,存取它的length屬性時就報錯了。

參考​AdvancedTypes#UnionTypes(中文版)​上一章:型別推論​​下一章:物件的型別——介面​Previous型別推論Next物件的型別——介面Lastmodified1yragoCopylinkContents簡單的例子存取聯合型別的屬性或方法參考



請為這篇文章評分?