// 定義變數
let a:string
// 定義變數並賦值(ts有型別推斷機制)
let b = "asd"
let c:string = "asd"
// 定義陣列
let arr1:number[] = [1,2,3,4]
// 定義物件
let per:{age: number,name: string} = {age : 11, name : "ASD "}
let per1= {age : 11, name : "ASD "}
//函式
// 函式沒有return語句,要麼不寫返回值型別,要麼寫void,但是不能寫number等
function add1(a: number,b: number): void{
console.log(a+b)
}
函式賦預設值
function getInfo(name:string,age:number,sex: string ="未知"): void{
console.log("名字為:"+name,"年齡:"+age,"性別:"+sex)
}
getInfo("張", 11)
輸出:【"名字為:張", "年齡:11", "性別:未知"】
匿名函式
let add2 = (a: number,b: number) =>{
console.log(a+b)
}
// 如果寫在類裡面就不用寫function,直接add1(a: number,b: number): number{}
類,static靜態
// // 靜態成員隸屬於類本身,而不屬於某個物件例項,所以你不需要去創鍵一個類再使用,直接透過類呼叫。靜態成員通用用於定義一些常量,或方法
class A{
static num:number = 1
static add(a:number,b:number){
console.log(a+b)
}
}
console.log(A.num)
A.add(1,2)
類,構造器
// 構造器:在創鍵物件時會被自動呼叫,以完成物件的屬性進行初始化。所以創鍵物件傳的是構造器引數:new Person(構造器引數)
class Person {
mingzi: string;
id:number;
address: string ;
constructor(mingzi:string, id:number,address: string= "Chain"){
this.mingzi = mingzi
this.id = id
this.address = address
}
getint(){
console.log("方法")
}
}
// new 類名(構造器引數)
let p = new Person("zhang",11)
console.log(p.address)
輸出:【"Chain"】
繼承
繼承
// student繼承Person,他是繼承了所有屬性和方法,所以你要在子類構造器對父類所有屬性初始化,記得用super傳下父類屬性值就行
// 在子類中,不管是父類的屬性還是方法都可以透過this呼叫
介面
// // 介面定義的變數不能賦值,方法不能有方法體