typeScript 中引入了 object 類型,用于表示非原始類型。在 JS 中被叫做原始類型的有:number、string、boolean、bigint、symbol、null 和 undefined 。
剛接觸 TS 可能會對 object、Object 和 { } 很困惑,不知道它們之間有什麼區别, 本篇文章就讓我們來詳細學習下吧!
一、學習 object、Object 和 {}1.1、object
object 是非原始類型,不能夠讓原始的基礎數據類型的數據賦值給它,不能夠作為他的一個類型值得具體值。因此 object 可以是任意的非原始類型,如對象、方法、數組。
// 對象類型
let obj: object = {
name:'前端代碼女神'
};
//方法
let fun: object = function () {
}
//數組
let arr: object=[]
如果賦值給一個原始數據類型時:
let num: object=1
錯誤提示:
1.2、Object
Object 代表的是所有擁有 toString() 和 hasOwnProperty() 方法的類型,也就是包含原始類型和非原始類型。因此可以把任意的數據類型值賦值給 Object 類型值,如:
// 對象類型
let obj: Object = {
name:'前端代碼女神'
};
//方法
let fun: Object = function () {
}
// array 類型
let arr: Object = [1, 2, 3]
// number 類型
let num: Object = 1;
如果是 undefined 和 null 時:
let und: Object = undefined
let nul: Object = null
此時報錯信息:
如果此時将 tsconfig.json 文件中的 strict 嚴格模式設置為 false 時,就不會報錯了。因此在嚴格模式下,不能将 undefined 和 null 賦值給 Object 類型的值。
同理,對應的 object 也是一樣的結果。
1.3、{}
{ } 即空類型,描述了一個沒有成員的對象。當你視圖訪問這樣的一個對象的任意屬性時,typeScript 會産生一個編譯錯誤。
let obj = { }
obj.name = "哈哈"
錯誤提示:
對象字面量 { } 限制對象時,最大優點就是能夠對對象中的屬性有更好的限制引用數據類型。
let obj: {
name: string,
age: number
} = {
name: '前端程序員',
age:20
}
console.log(obj.name) //前端程序員
console.log(obj.age)//20
如果修改對象中的屬性時:
obj.name = "abc"
console.log(obj.name) // abc
// error
obj.name = 123
但是仍然可以使用 Object 類型上的所有屬性和方法,這些屬性和方法可以通過 JS 的原型鍊隐式的使用:
console.log(obj.toString());//[object Object]
object 、Object 和 { } 我們對這三者之間的區别與聯系做一個總結,分别有:
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!