大家好!今天第五天,我們要來聊聊 JavaScript( JS)最核心的資料結構——物件(object),以及與原始型別不同的物件型別(object types)!
在介紹物件之前,先來探討何謂物件型別?
//先宣告一個 student 物件,並直接在冒號後面加上型別
let student:{
name: string;
phoneNum: number; //定義型別時,屬性之間可以使用分號或逗號隔開
};
student = {
name: "Judy",
phoneNum: 123456789
};
//錯誤寫法 1 :
student = {
name: "Judy",
phoneNum: "123456789" //若將phoneNum的型別寫成string,TS會因為型別不同而報錯
};
//錯誤寫法 2 :
student = {
name: "Judy",
id: 123 //將phoneNum更改為id,屬性與原先物件定義不同,即便型別一致,TS也會報錯
};
有時候,物件裡的屬性不一定要填寫,這時候要在屬性後加上
?,將其更改為可選屬性。
let student: {
name : string;
club? : string;
};
student = {
name: "Owen" //假設這個物件沒有參加社團,只寫一個屬性也不會報錯
};
若希望物件中的某個屬性在賦值後保持不更動的狀態,可以在屬性前加上
readonly,使其變更為唯讀屬性。
let student: {
name: string;
readonly id: number;
};
student ={
name: "Judy",
id: 123
};
//假設我試圖修改id的值:
student.id = 456; //此時TS會因為唯讀屬性的關係而報錯
物件型別的應用多變又靈活,除了今天介紹的物件外,明天會先介紹陣列,之後還會連接到聯合型別、型別別名或函式等等。
最後,來統整一下今天關於物件的介紹吧!
物件型別宣告方式:用 { key: type } 來限制物件裡的屬性與型別。
可選屬性:屬性名稱後加問號,代表這個資料可寫可不寫(不寫會變成undefined)。
唯讀屬性 (readonly):屬性前加readonly,建立後無法再修改它的值。
今天就到這邊,大家明天見!