精品熟女碰碰人人a久久,多姿,欧美欧美a v日韩中文字幕,日本福利片秋霞国产午夜,欧美成人禁片在线观看

TypeScript 對象

TypeScript 對象

對象是包含一組鍵值對的范例。 值可以是標量、函數、數組、對象等,如下范例:

var object_name = { 
    key1: "value1", // 標量
    key2: "value",  
    key3: function() {
        // 函數
    }, 
    key4:["content1", "content2"] //集合
}

以上對象包含了標量,函數,集合(數組或元組)。

 

1. 對象范例

var sites = { 
   site1:"Codebaoku", 
   site2:"Google" 
}; 
// 訪問對象的值
console.log(sites.site1) 
console.log(sites.site2)

編譯以上代碼,得到以下 JavaScript 代碼:

var sites = { 
   site1:"Codebaoku", 
   site2:"Google" 
}; 
// 訪問對象的值
console.log(sites.site1) 
console.log(sites.site2)

輸出結果為:

Codebaoku
Google

 

2. TypeScript 類型模板

假如我們在 JavaScript 定義了一個對象:

var sites = { 
   site1:"Codebaoku", 
   site2:"Google" 
};

這時如果我們想在對象中添加方法,可以做以下修改:

sites.sayHello = function(){ return "hello";}

如果在 TypeScript 中使用以上方式則會出現編譯錯誤,因為Typescript 中的對象必須是特定類型的范例。

var sites = {
    site1: "Codebaoku",
    site2: "Google",
    sayHello: function () { } // 類型模板
};
sites.sayHello = function () {
    console.log("hello " + sites.site1);
};
sites.sayHello();

編譯以上代碼,得到以下 JavaScript 代碼:

var sites = {
    site1: "Codebaoku",
    site2: "Google",
    sayHello: function () { } // 類型模板
};
sites.sayHello = function () {
    console.log("hello " + sites.site1);
};
sites.sayHello();

輸出結果為:

hello Codebaoku

此外對象也可以作為一個參數傳遞給函數,如下范例:

var sites = { 
    site1:"Codebaoku", 
    site2:"Google",
}; 
var invokesites = function(obj: { site1:string, site2 :string }) { 
    console.log("site1 :"+obj.site1) 
    console.log("site2 :"+obj.site2) 
} 
invokesites(sites)

編譯以上代碼,得到以下 JavaScript 代碼:

var sites = {
    site1: "Codebaoku",
    site2: "Google"
};
var invokesites = function (obj) {
    console.log("site1 :" + obj.site1);
    console.log("site2 :" + obj.site2);
};
invokesites(sites);

輸出結果為:

site1 :Codebaoku
site2 :Google

 

3. Duck 類型(Duck Typing)

Duck 類型是動態類型的一種風格,是多態(polymorphism)的一種形式。

在這種風格中,一個對象有效的語義,不是由繼承自特定的類或實現特定的接口,而是由"當前方法和屬性的集合"決定。

在Duck類型中,關注點在于對象的行為,能作什么;而不是關注對象所屬的類型。例如,在不使用Duck類型的語言中,我們可以編寫一個函數,它接受一個類型為"Duck"的對象,并調用它的"走"和"叫"方法。在使用 Duck 類型的語言中,這樣的一個函數可以接受一個任意類型的對象,并調用它的"走"和"叫"方法。如果這些需要被調用的方法不存在,那么將引發一個運行時錯誤。任何擁有這樣的正確的"走"和"叫"方法的對象都可被函數接受的這種行為引出了以上表述,這種決定類型的方式因此得名。

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})  
 
// 錯誤 
var newPoint2 = addPoints({x:1},{x:4,y:3})

下一節:TypeScript 命名空間

TypeScript 教程

相關文章