文章目錄
- 一、TypeScript 基礎類型
- 1. **Number**: 用于表示數字。可以是整數或浮點數。
- 2. **String**: 用于表示文本類型的數據。
- 3. **Boolean**: 表示邏輯值:`true` 或 `false`。
- 4. **Array**: 表示一組值。TypeScript 使用泛型(generics)來定義數組的類型。
- 5. **Tuple**: 類似于數組,但每個元素的類型都是固定的。
- 6. **Enum**: 枚舉類型,允許我們為一組數值賦予友好的名字。
- 7. **Any**: 當你不確定一個變量是什么類型時,可以使用 `any` 類型。這相當于告訴 TypeScript 不要進行任何類型檢查。
- 8. **Void**: 表示沒有任何類型或值的類型。通常用于表示不返回任何值的函數。
- 9. **Null 和 Undefined**: 這兩個類型在 TypeScript 中有它們自己的類型,但與 `void` 不同,它們是所有類型的子類型。
- 10. **Never**: 表示的是那些永不存在的值的類型。例如,函數總是拋出異常或根本不會有返回值。
- 11. **Object**: 用于非原始值(即“對象”或“類”實例)。
- 12. **Symbol**: 表示唯一的值。
- 二、TypeScript 支持那些ES6內置對象
- 1. **Array**
- 2. **String**
- 3. **Set 和 Map**
- 4. **Promise**
- 5. **RegExp**
- 三、相關鏈接
一、TypeScript 基礎類型
TypeScript 是 JavaScript 的一個超集,它添加了靜態類型系統和一些其他功能,使得代碼更加健壯和可維護。在 TypeScript 中,有一些基礎類型,這些類型與 JavaScript 中的基本數據類型相對應,但提供了更多的靜態類型檢查。以下是 TypeScript 的基礎類型:
1. Number: 用于表示數字。可以是整數或浮點數。
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
let big: bigint = 12345678901234567890n; // TypeScript 3.2+ 支持 bigint
2. String: 用于表示文本類型的數據。
let color: string = "blue";
color = 'red';
3. Boolean: 表示邏輯值:true
或 false
。
let isDone: boolean = false;
4. Array: 表示一組值。TypeScript 使用泛型(generics)來定義數組的類型。
let list: number[] = [1, 2, 3];
let list2: Array<number> = [1, 2, 3];
5. Tuple: 類似于數組,但每個元素的類型都是固定的。
let x: [string, number] = ['hello', 10]; // 正確
// x = [10, 'hello']; // 錯誤
6. Enum: 枚舉類型,允許我們為一組數值賦予友好的名字。
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
7. Any: 當你不確定一個變量是什么類型時,可以使用 any
類型。這相當于告訴 TypeScript 不要進行任何類型檢查。
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
8. Void: 表示沒有任何類型或值的類型。通常用于表示不返回任何值的函數。
function warnUser(): void {console.log("This is my warning message");
}
9. Null 和 Undefined: 這兩個類型在 TypeScript 中有它們自己的類型,但與 void
不同,它們是所有類型的子類型。
let u: undefined = undefined;
let n: null = null;
10. Never: 表示的是那些永不存在的值的類型。例如,函數總是拋出異常或根本不會有返回值。
function error(message: string): never {throw new Error(message);
}
11. Object: 用于非原始值(即“對象”或“類”實例)。
let obj: object = {};
12. Symbol: 表示唯一的值。
let sym: symbol = Symbol();
二、TypeScript 支持那些ES6內置對象
TypeScript 支持 ES6(ECMAScript 2015)引入的所有內置對象,并且允許你使用這些對象以及它們的屬性和方法。以下是一些 ES6 內置對象及其在 TypeScript 中的使用案例代碼:
1. Array
ES6 為數組引入了一些新的方法,如 Array.from()
, Array.of()
, find()
, findIndex()
, includes()
, 等等。
// 使用 Array.from() 將類數組對象轉換為數組
const arrayLike = { 0: 'a', 1: 'b', 2: 'c', length: 3 };
const array: string[] = Array.from(arrayLike);// 使用 Array.of() 創建一個新數組
const numbers = Array.of(1, 2, 3);// 使用 find() 方法查找數組中的元素
const found = numbers.find(num => num === 2);// 使用 includes() 方法檢查數組是否包含某個元素
const hasOne = numbers.includes(1);
2. String
ES6 增強了字符串的功能,如模板字符串、startsWith()
, endsWith()
, repeat()
, 等等。
// 使用模板字符串
const name = 'Alice';
const greeting = `Hello, ${name}!`;// 使用 startsWith() 方法
const startsWithHello = greeting.startsWith('Hello');// 使用 repeat() 方法
const repeated = 'x'.repeat(3); // 'xxx'
3. Set 和 Map
Set 和 Map 是 ES6 引入的兩種新的數據結構。
// 使用 Set
const set = new Set<number>([1, 2, 2, 3, 4, 4, 5]);
// Set 會自動去重
const unique = [...set]; // [1, 2, 3, 4, 5]// 使用 Map
const map = new Map<string, number>();
map.set('one', 1);
map.set('two', 2);
const value = map.get('one'); // 1
4. Promise
Promise 用于處理異步操作。
function fetchData(): Promise<string> {// 模擬異步數據獲取return new Promise<string>((resolve, reject) => {setTimeout(() => {resolve('Data fetched!');}, 1000);});
}fetchData().then(data => {console.log(data); // 輸出 "Data fetched!"
}).catch(error => {console.error('Error fetching data:', error);
});
5. RegExp
正則表達式在 ES6 中沒有大的改動,但你可以在 TypeScript 中使用它們。
const regex = /hello/;
const match = 'hello world'.match(regex); // ['hello', index: 0, input: 'hello world', groups: undefined]
- Proxy 和 Reflect
這兩個是 ES6 引入的元編程工具。
const target = {};
const handler = {get(target, propKey, receiver) {return `Getting ${propKey}!`;}
};const proxy = new Proxy(target, handler);
console.log(proxy.example); // 輸出 "Getting example!"
在上面的代碼中,Proxy
用于創建一個對象的代理,攔截對目標對象的某些操作,而 Reflect
提供了一種方法來在運行時獲取默認行為。雖然 Reflect
在此例中沒有被直接使用,但它是 Proxy
的一個重要伴侶,因為許多 Proxy
處理器默認都會使用 Reflect
上的方法。
三、相關鏈接
- TypeScript中文網
- TypeScript下載
- TypeScript文檔
- TypeScript系列」TypeScript簡介及基礎語法