//class 類
class MyClass {
//屬性
[index: string]: any;
//構造函數
//和java一樣,默認自帶無參數的構造函數
constructor() {
}
//一些方法
}
var myClass_1: MyClass = new MyClass();
myClass_1.keys = "123";//以靜態方式添加屬性
myClass_1["key2"] = "123";//以動態方式添加屬性
myClass_1.sayHi = function (): string { return "hahaha" };
console.log(myClass_1)
//由於該方法是動態添加的,編輯器無法給方法提示,該對象只在運行期才擁有sayHi()方法
console.log(myClass_1.sayHi())
// obj?.prop // 自判斷靜態屬性訪問
// obj?.[expr] // 自判斷動態訪問
// func?.(...args) // 自判斷函數或方法調用
//鴨子類型(Duck Typing)
//本質上就是java中的,利用接口實現多態
//ts裏的接口有目前來看有兩種作用:
//1、像java中一樣,當作一個接口,讓類來實現,從而實現多態
//2、使用鴨子類型,當作一種“模板”,模板內可以包含number、string、function等等,甚至可以
//[keyName:string]:any 這樣給實現了 “模板”的對象 動態地增加屬性
export interface IPoint {
x:number
y:number
}
export function addPoints(p1:IPoint,p2:IPoint):IPoint {
var x = p1.x + p2.x
var y = p1.y + p2.y
return {x:x,y:y}
}
// 正確
export var newPoint = addPoints({x:3,y:4},{x:5,y:1})
// 錯誤
//export var newPoint2 = addPoints({x:1},{x:4,y:3})
typescript:鴨子類型、屬性靜態訪問、屬性動態訪問、
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.