最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

TS 從入門到深度掌握,晉級TypeScript高手

2023-03-28 09:58 作者:VX_itxx66  | 我要投稿

TypeScript 是一種由微軟開發(fā)的開源編程語言,它是 JavaScript 的超集,為 JavaScript 添加了靜態(tài)類型和面向?qū)ο缶幊痰忍匦浴ypeScript 的目標(biāo)是提高 JavaScript 的可維護(hù)性和可擴(kuò)展性。在本篇文章中,我們將從 TypeScript 的入門一直到深入掌握,帶你進(jìn)入 TypeScript 的神奇世界。


## 1. 安裝 TypeScript

首先我們需要安裝 TypeScript??梢酝ㄟ^ npm 全局安裝 TypeScript:

```shell

npm install -g typescript

```


安裝完 TypeScript 后,我們就可以在命令行中使用 `tsc` 命令來將 TypeScript 轉(zhuǎn)換成 JavaScript 代碼。


## 2. 第一個 TypeScript 程序

創(chuàng)建一個 hello.ts 文件,然后在文件中輸入以下代碼:


```typescript

console.log("Hello, TypeScript!");

```


保存文件后,打開命令行并進(jìn)入該文件所在的目錄。運(yùn)行以下命令:

```shell

tsc hello.ts

```


命令執(zhí)行成功后,會在當(dāng)前目錄下生成一個 hello.js 文件。打開文件,可以看到它包含以下 JavaScript 代碼:


```javascript

console.log("Hello, TypeScript!");

```


可以在命令行中直接運(yùn)行這個 JavaScript 文件:


```shell

node hello.js

```


這樣就會在控制臺中輸出 `Hello, TypeScript!` 了。


## 3. 類型


TypeScript 是一種類型化的語言。與 JavaScript 不同,在 TypeScript 中,您可以為變量、函數(shù)參數(shù)和返回值指定類型,這可以大大減少代碼中的錯誤。


可以使用如下語法為變量指定類型:


```typescript

let variableName: type = value;

```


下面是一個示例:


```typescript

let num: number = 10;

let str: string = "Hello, TypeScript!";

let bool: boolean = true;

```


TypeScript 支持 JavaScript 的所有數(shù)據(jù)類型外,還提供了一些其他的數(shù)據(jù)類型,如枚舉、元組、void、never 等。


```typescript

enum Color {

? Red,

? Green,

? Blue

}


let color1: Color = Color.Red;

let color2: Color = Color.Green;

let color3: Color = Color.Blue;


let tuple: [string, number] = ["TypeScript", 2021];


function logMessage(): void {

? console.log("This is a log message");

}


function neverReturns(): never {

? throw new Error("An error occurred.");

}

```


## 4. 接口


TypeScript 中的接口可以用來定義數(shù)據(jù)類型的契約,以便更輕松地檢測代碼中的錯誤。


```typescript

interface Person {

? firstName: string;

? lastName: string;

? age: number;

}


let person: Person = {

? firstName: "John",

? lastName: "Doe",

? age: 30

};

```


## 5. 類


TypeScript 中也支持面向?qū)ο缶幊蹋梢允褂妙悂韯?chuàng)建對象。類可以包含屬性和方法。


```typescript

class Person {

? firstName: string;

? lastName: string;

? age: number;


? constructor(firstName: string, lastName: string, age: number) {

? ? this.firstName = firstName;

? ? this.lastName = lastName;

? ? this.age = age;

? }


? getFullName() {

? ? return this.firstName + " " + this.lastName;

? }

}


let person: Person = new Person("John", "Doe", 30);

console.log(person.getFullName());

```


## 6. 函數(shù)


TypeScript 中的函數(shù)可以指定函數(shù)參數(shù)和返回值的類型。


```typescript

function add(num1: number, num2: number): number {

? return num1 + num2;

}


let result = add(10, 20);

console.log(result);

```


可以看到,這個函數(shù)接受兩個數(shù)字作為參數(shù),并返回它們的和。


## 7. 泛型


TypeScript 中的泛型可以編寫靈活的代碼,因?yàn)樗试S您在編譯時指定特定類型的代碼。


```typescript

function identity<T>(arg: T): T {

? return arg;

}


let output1 = identity<number>(10);

let output2 = identity<string>("Hello, TypeScript");


console.log(output1); // 輸出 10

console.log(output2); // 輸出 "Hello, TypeScript"

```


## 8. 命名空間


命名空間是一種將代碼分成邏輯塊的方式。TypeScript 中的命名空間可以更好地組織和管理代碼。


```typescript

namespace Shapes {

? export function square(x: number) {

? ? return x * x;

? }


? export function circle(radius: number) {

? ? return Math.PI * radius * radius;

? }

}


console.log(Shapes.square(10)); // 輸出 100

console.log(Shapes.circle(10)); // 輸出 314.1592653589793

```


## 9. 模塊


與命名空間相似,模塊也是一種組織和管理代碼的方式。模塊可以將邏輯相關(guān)代碼封裝到一個單獨(dú)文件或一組文件中,使代碼更易于維護(hù)。TypeScript 中的模塊可以使用 `export` 和 `import` 關(guān)鍵字來實(shí)現(xiàn)。


```typescript

// logger.ts

export function logMessage(message: string) {

? console.log(message);

}


// app.ts

import { logMessage } from "./logger";


logMessage("Hello, TypeScript!");

```


## 10. 類型兼容性


TypeScript 中的類型兼容性是指一種類型是否可以賦值給另一種類型的概念。


```typescript

let num: number = 10;

let str: string = "Hello, TypeScript!";


num = str; // 報錯,類型 "string" 不能賦值給類型 "number"

```


以上示例中,將字符串類型賦值給數(shù)字類型將導(dǎo)致編譯錯誤。因?yàn)樗鼈兪遣煌念愋?,不能互相賦值。在 TypeScript 中,類型兼容性用于捕獲這些類型錯誤。


## 11. 類型斷言


有時候,TypeScript 無法確定變量的類型,這時候就需要開發(fā)者告訴 TypeScript 變量的確切類型。這可以通過類型斷言來實(shí)現(xiàn)。


```typescript

let someValue: any = "this is a string";


let strLength1: number = (<string>someValue).length;

let strLength2: number = (someValue as string).length;

```


在這個示例中,`someValue` 的類型為 `any`,它可以是任何類型。通過類型斷言,我們告訴 TypeScript `someValue` 是一個字符串,并獲取它的長度。


## 12. 繼承


TypeScript 支持面向?qū)ο缶幊讨械睦^承概念。


```typescript

class Animal {

? name: string;


? constructor(name: string) {

? ? this.name = name;

? }


? speak() {

? ? console.log(this.name + " makes a noise.");

? }

}


class Dog extends Animal {

? constructor(name: string) {

? ? super(name);

? }


? speak() {

? ? console.log(this.name + " barks.");

? }

}


let dog = new Dog("Rover");

dog.speak(); // 輸出 "Rover barks."

```


在這個示例中,我們定義了一個 Animal 類,它包含一個名稱屬性 `name` 和一個方法 `speak`。然后我們定義了一個 `Dog` 類,它繼承自 `Animal`,并重寫了 `speak` 方法。最后,我們創(chuàng)建了一個 `Dog` 對象并調(diào)用它的 `speak` 方法。


## 13. 接口繼承


在 TypeScript 中,接口也支持繼承。這意味著一個接口可以從其他接口繼承屬性和方法。


```typescript

interface Shape {

? color: string;

}


interface Square extends Shape {

? sideLength: number;

}


let square = {} as Square;

square.color = "blue";

square.sideLength = 10;


console.log(square.color);

console.log(square.sideLength);

```


在示例中,我們定義了一個接口 `Shape`,它有一個屬性 `color`。然后,我們定義了另一個接口 `Square`,它繼承了 `Shape`,并添加了一個 `sideLength` 屬性。最后,我們創(chuàng)建了一個 `Square` 對象,并為它的屬性賦值。


## 14. 命名空間與模塊


命名空間和模塊都可以用來組織代碼,但它們的工作方式有所不同。命名空間主要用于在全局范圍內(nèi)組織和管理代碼。模塊用于在模塊范圍內(nèi)組織和管理代碼,這意味著模塊中的變量、函數(shù)等在模塊外部是不可訪問的。


例如,假設(shè)我們有一個 `Calculator.ts` 文件包含一個簡單的計算器函數(shù),如下所示:


```typescript

// Calculator.ts

export function add(num1: number, num2: number): number {

? return num1 + num2;

}

```


這樣我們就可以將這個文件作為一個模塊導(dǎo)出。在我們的 `app.ts` 文件中,我們就可以使用以下代碼來訪問這個模塊中的函數(shù):


```typescript

// app.ts

import { add } from "./Calculator";


let result = add(10, 20);


console.log(result); // 輸出 30

```


## 15. 總結(jié)


在本篇文章中,我們從 TypeScript 的入門到深度掌握了許多重要的概念,如類型、函數(shù)、泛型、類和繼承、命名空間和模塊等。希望這篇文章對你有所幫助,能夠幫助你深入了解 TypeScript,成為一名 TypeScript 高手。


TS 從入門到深度掌握,晉級TypeScript高手的評論 (共 條)

分享到微博請遵守國家法律
克拉玛依市| 惠安县| 包头市| 施甸县| 四川省| 铅山县| 太原市| 耿马| 镇巴县| 安塞县| 高淳县| 班玛县| 鄄城县| 屯门区| 高陵县| 澳门| 河源市| 富民县| 呼图壁县| 广昌县| 达州市| 荥经县| 同仁县| 丹巴县| 杭锦旗| 连城县| 昭平县| 林周县| 朝阳县| 滕州市| 手机| 南充市| 萨嘎县| 广平县| 西林县| 聂拉木县| 花垣县| 玉树县| 瓮安县| 武强县| 明溪县|