1、TypeScript 對(duì)象
對(duì)象是包含一組鍵值對(duì)的實(shí)例。 值可以是標(biāo)量、函數(shù)、數(shù)組、對(duì)象等,如下實(shí)例:
var object_name = {
key1: "value1", // 標(biāo)量
key2: "value",
key3: function() {
// 函數(shù)
},
key4:["content1", "content2"] //集合
}復(fù)制
以上對(duì)象包含了標(biāo)量,函數(shù),集合(數(shù)組或元組)。
對(duì)象實(shí)例
鴻蒙開發(fā)文檔參考了:[qr23.cn/AKFP8k
]
TypeScript
var sites = {
site1:"Runoob",
site2:"Google"
};
// 訪問對(duì)象的值
console.log(sites.site1)
console.log(sites.site2)復(fù)制
編譯以上代碼,得到以下 JavaScript 代碼:
JavaScript
var sites = {
site1:"Runoob",
site2:"Google"
};
// 訪問對(duì)象的值
console.log(sites.site1)
console.log(sites.site2)復(fù)制
輸出結(jié)果為:
Runoob
Google
2、TypeScript 類型模板
假如我們?cè)?JavaScript 定義了一個(gè)對(duì)象:
var sites = {
site1:"Runoob",
site2:"Google"
};復(fù)制
這時(shí)如果我們想在對(duì)象中添加方法,可以做以下修改:
sites.sayHello = function(){ return "hello";}
如果在 TypeScript 中使用以上方式則會(huì)出現(xiàn)編譯錯(cuò)誤,因?yàn)門ypescript 中的對(duì)象必須是特定類型的實(shí)例。
TypeScript
sites.sayHello = function(){ return "hello";}復(fù)制
編譯以上代碼,得到以下 JavaScript 代碼:
JavaScript
var sites = {
site1: "Runoob",
site2: "Google",
sayHello: function () { } // 類型模板
};
sites.sayHello = function () {
console.log("hello " + sites.site1);
};
sites.sayHello();復(fù)制
輸出結(jié)果為:
hello Runoob
此外對(duì)象也可以作為一個(gè)參數(shù)傳遞給函數(shù),如下實(shí)例:
TypeScript
var sites = {
site1: "Runoob",
site2: "Google",
sayHello: function () { } // 類型模板
};
sites.sayHello = function () {
console.log("hello " + sites.site1);
};
sites.sayHello();復(fù)制
編譯以上代碼,得到以下 JavaScript 代碼:
JavaScript
var sites = {
site1: "Runoob",
site2: "Google"
};
var invokesites = function (obj) {
console.log("site1 :" + obj.site1);
console.log("site2 :" + obj.site2);
};
invokesites(sites);復(fù)制
輸出結(jié)果為:
site1 :Runoob
site2 :Google
3、鴨子類型(Duck Typing)
鴨子類型(英語(yǔ):duck typing)是動(dòng)態(tài)類型的一種風(fēng)格,是多態(tài)(polymorphism)的一種形式。
在這種風(fēng)格中,一個(gè)對(duì)象有效的語(yǔ)義,不是由繼承自特定的類或?qū)崿F(xiàn)特定的接口,而是由"當(dāng)前方法和屬性的集合"決定。
"當(dāng)看到一只鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那么這只鳥就可以被稱為鴨子。"
在鴨子類型中,關(guān)注點(diǎn)在于對(duì)象的行為能做什么,而不是關(guān)注對(duì)象所屬的類型。例如,在不使用鴨子類型的語(yǔ)言中,我們可以編寫一個(gè)函數(shù),它接受一個(gè)類型為"鴨子"的對(duì)象,并調(diào)用它的"走"和"叫"方法。在使用鴨子類型的語(yǔ)言中,這樣的一個(gè)函數(shù)可以接受一個(gè)任意類型的對(duì)象,并調(diào)用它的"走"和"叫"方法。如果這些需要被調(diào)用的方法不存在,那么將引發(fā)一個(gè)運(yùn)行時(shí)錯(cuò)誤。任何擁有這樣的正確的"走"和"叫"方法的對(duì)象都可被函數(shù)接受的這種行為引出了以上表述,這種決定類型的方式因此得名。
interface IPoint {
x:number
y:number
}
function addPoints(p1:IPoint,p2:IPoint):IPoint {
var x = p1.x + p2.x
var y = p1.y + p2.y
return {x:x,y:y}
}
// 正確
var newPoint = addPoints({x:3,y:4},{x:5,y:1})
// 錯(cuò)誤
var newPoint2 = addPoints({x:1},{x:4,y:3})
審核編輯 黃宇
-
鴻蒙
+關(guān)注
關(guān)注
57文章
2392瀏覽量
43050 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
1982瀏覽量
30573 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3744瀏覽量
16577
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論