console.log('hi ts');
//宣告變數
let a: number = 10;
//宣告常量
const b: number = 20;
// 型別推斷:如果⼀個變數或常量的宣告包含了初始值,TS便可以根據初始值進⾏型別推斷,此時可以不顯式指定其型別
let c = 60;
console.log(typeof c); //number
// 數字型別:整數和浮點數、整數和負數
let a1: number = 100;
let a2: number = -100;
let a3: number = 3.5;
let a4: number = -3.5;
// 字串型別
let s1: string = 'hello';
let s2: string = "你好";
// 布林型別
let b1: boolean = true;
let b2: boolean = false;
// 陣列
let arr1: number[] = [1, 2, 3];
let arr2: string[] = ['1', '2', '3'];
let arr3: number[] = [];
// 物件
let person: {name: string, age: number} = {
name: '張三',
age: 18
}
// 函式
/**
* 函式add: 計算並返回兩個數字的和。
* @param x {number} 第一個加數。
* @param y {number} 第二個加數。
* @returns {number} 兩個數字的和。
*/
function add(x: number, y: number): number {
return x + y; // 返回x和y的和
}
//可選引數?:調⽤函式時,未傳遞可選引數,則該引數的值為 undefined
function getPersonInfo(name: string, age: number, gender?: string): string {
if (gender === undefined) {
gender = '未知'
}
return `name:${name},age:${age},gender:${gender}`;
}
let p1 = getPersonInfo('zhagnsan', 10, '男')
let p2 = getPersonInfo('lisi', 15);
console.log(p1);
console.log(p2);
//引數預設值
function getPersonInfo2(name: string, age: number, gender: string='未知'): string {
return `name:${name},age:${age},gender:${gender}`;
}
let p3 = getPersonInfo2('zhagnsan', 10, '男')
let p4 = getPersonInfo2('lisi', 15);
console.log(p3);
console.log(p4);
//聯合型別|:⼀個函式可能⽤於處理不同型別的值,這種情況可以使⽤聯合型別
function printNumberOrString(message: number | string) {
console.log(message)
}
printNumberOrString('a')
printNumberOrString(1)
//任意型別any
function print(message:any) {
console.log(message)
}
print('aa')
print(11)
print(true)
print(person)
//空返回值void:若函式沒有返回值,則可以使⽤ void 作為返回值型別,其含義為空
function test(): void {
console.log('hello');
}
//返回值型別推斷:函式的返回值型別可根據函式內容推斷出來時,可以省略不寫。
function test2() {
//TS自動推斷為void
console.log('hello');
}
function sum2(a: number, b: number) {
//TS自動推斷為number
return a + b;
}
//匿名函式:適⽤於簡單且僅需⼀次性使⽤的場景。匿名函式能夠根據上下⽂推斷出引數型別,因此引數型別可以省略
let arr4: number[] = [77, 88, 99];
arr4.forEach(function(item) {
console.log(item);
})
//lambda箭頭函式:數的語法還可以進⼀步的簡化,只保留引數列表和函式體兩個核⼼部分,兩者⽤ => 符號連線
arr4.forEach((item) => { console.log(item); })
arr4.forEach(item => console.log(item))