TypeScript教程(二)基礎語法與基礎類型

一、基礎語法

TypeScript由以下幾個部分組成

1.模塊

2.函數

3.變量

4.語句和表達式

5.注釋

示例:

Runoob.ts 文件代碼:

const hello : string = "Hello World!"
console.log(hello)

以上代碼首先通過?tsc?命令編譯:

tsc Runoob.ts

Runoob.js 文件代碼:?

var hello = "Hello World!";
console.log(hello);

最后我們使用 node 命令來執行該 js 代碼。

$ node Runoob.js
Hello World

tsc 常用編譯參數如下表所示:

序號編譯參數說明
1.

--help

顯示幫助信息

2.

--module

載入擴展模塊

3.

--target

設置 ECMA 版本

4.

--declaration

額外生成一個 .d.ts 擴展名的文件。

tsc ts-hw.ts --declaration

以上命令會生成 ts-hw.d.ts、ts-hw.js 兩個文件。

5.

--removeComments

刪除文件的注釋

6.

--out

編譯多個文件并合并到一個輸出的文件

7.

--sourcemap

生成一個 sourcemap (.map) 文件。

sourcemap 是一個存儲源代碼與編譯代碼對應位置映射的信息文件。

8.

--module noImplicitAny

在表達式和聲明上有隱含的 any 類型時報錯

9.

--watch

在監視模式下運行編譯器。會監視輸出文件,在它們改變時重新編譯。

TypeScript 保留關鍵字:

breakascatchswitch
caseifthrowelse
varnumberstringget
moduletypeinstanceoftypeof
publicprivateenumexport
finallyforwhilevoid
nullsuperthisnew
inreturntruefalse
anyextendsstaticlet
packageimplementsinterfacefunction
dotryyieldconst
continue

空白和換行:

TypeScript會忽略程序中出現的空格,制表符和換行符

空格,制表符通常用來縮進代碼,使代碼易于閱讀和理解

TypeScript區分大小寫字符

分號是可選的

單行指令都是一段語句,可以使用分號或不使用,建議使用

TypeScript與面向對象

面向對象是一種對現實世界理解和抽象的方法

TypeScript是一種面向對象的編程語言

面向對象主要有兩個概念:對象和塊

? ? ? ? 對象:對象是類的一個實例,有狀態和行為

? ? ? ? 類:類是一個模板,描述的是一類對象的行為和狀態

? ? ? ? 方法:方法是類的操作的實現步驟

示例:

TypeScript面向對象編程

class Site { name():void { console.log("Runoob") } 
} 
var obj = new Site(); 
obj.name();

以上示例定義了一個類Site,該類有一個方法name(),該方法在終端上輸出字符串Runoob

new關鍵字創建類的對象,該對象調用方法name(),

編譯后生成的JavaScript

var Site = /** @class */ (function () {function Site() {}Site.prototype.name = function () {console.log("Runoob");};return Site;
}());
var obj = new Site();
obj.name();

二、基礎類型

數據類型關鍵字描述
任意類型any聲明為 any 的變量可以賦予任意類型的值。
數字類型number

雙精度 64 位浮點值。它可以用來表示整數和分數。

let binaryLiteral: number = 0b1010; // 二進制
let octalLiteral: number = 0o744;    // 八進制
let decLiteral: number = 6;    // 十進制
let hexLiteral: number = 0xf00d;    // 十六進制
字符串類型string

一個字符系列,使用單引號(')或雙引號(")來表示字符串類型。反引號(`)來定義多行文本和內嵌表達式。

let name: string = "Runoob";
let years: number = 5;
let words: string = `您好,今年是 ${ name } 發布 ${ years + 1} 周年`;
布爾類型boolean

表示邏輯值:true 和 false。

let flag: boolean = true;
數組類型

聲明變量為數組。

// 在元素類型后面加上[]
let arr: number[] = [1, 2];// 或者使用數組泛型
let arr: Array<number> = [1, 2];
元組

元組類型用來表示已知元素數量和類型的數組,各元素的類型不必相同,對應位置的類型需要相同。

let x: [string, number];
x = ['Runoob', 1];    // 運行正常
x = [1, 'Runoob'];    // 報錯
console.log(x[0]);    // 輸出 Runoob
枚舉enum

枚舉類型用于定義數值集合。

enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
console.log(c);    // 輸出 2
voidvoid

用于標識方法返回值的類型,表示該方法沒有返回值。

function hello(): void {alert("Hello Runoob");
}
nullnull

表示對象值缺失。

undefinedundefined

用于初始化變量為一個未定義的值

nevernever

never 是其它類型(包括 null 和 undefined)的子類型,代表從不會出現的值。

注:TypeScript和JavaScript沒有整數類型

1.Any類型

任意值是TypeScript針對編程時類型不明確的變量使用的一種數據類型

1.變量的值會動態改變時,比如來自用戶的輸入,任意值類型可以讓這些變量跳過編譯器階段的類型檢查

let x: any = 1;    // 數字類型
x = 'I am who I am';    // 字符串類型
x = false;    // 布爾類型

2.改寫現有代碼時,任意值允許在編譯時可選擇地包含或移除類型檢查

let arrayList: any[] = [1, false, 'fine'];
arrayList[1] = 100;

2.Null和Undefined

null

在JavaScript中null表示"什么都沒有",是一個只有一個值的特殊類型,表示一個空對象的引用

用TypeScript檢測null返回是object

undefined

在JavaScript中,underfined是一個沒有設置值的變量

typeof一個沒有值的變量會返回undefined

null和undefined是其他任何類型(包括void)的子類型,可以賦值給其他類型,

而在JavaScript中,啟用嚴格的空校驗(--strictNullChecks)特性,就可以使得null和underfined只能被賦值給void或本身對應的類型:

// 啟用 --strictNullChecks
let x: number;
x = 1; // 編譯正確
x = undefined;    // 編譯錯誤
x = null;    // 編譯錯誤

上面例子的變量x只能是number類型,如果一個類型可能出現null或undefined,可以用 | 來支持多種類型

// 啟用 --strictNullChecks
let x: number | null | undefined;
x = 1; // 編譯正確
x = undefined;    // 編譯正確
x = null;    // 編譯正確

3.never類型

never是其他類型(包括null和undefined)的子類型,代表從不會出現的值,這意味著never只能被never類型所賦值,在函數中通常表現為拋出異常或無法執行到終點(例如無限循環)

let x: never;
let y: number;// 編譯錯誤,數字類型不能轉為 never 類型
x = 123;// 運行正確,never 類型可以賦值給 never類型
x = (()=>{ throw new Error('exception')})();// 運行正確,never 類型可以賦值給 數字類型
y = (()=>{ throw new Error('exception')})();// 返回值為 never 的函數可以是拋出異常的情況
function error(message: string): never {throw new Error(message);
}// 返回值為 never 的函數可以是無法被執行到的終止點的情況
function loop(): never {while (true) {}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37188.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37188.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37188.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MQTT寶典

文章目錄 1.介紹2.發布和訂閱3.MQTT 數據包結構4.Demo5.EMQX 1.介紹 什么是MQTT協議 MQTT&#xff08;消息隊列遙測傳輸協議&#xff09;&#xff0c;是一種基于發布/訂閱&#xff08;publish/subscribe&#xff09;模式的“輕量級”通訊協議&#xff0c;該協議構建于TCP/IP協…

php、 go 語言怎么結合構建高性能高并發商城。

一、php、 go 語言怎么結合構建高性能高并發商城。 將PHP和Go語言結合起來構建高性能高并發的商城系統可以通過多種方法實現&#xff0c;以利用兩種語言的優勢。下面是一些可能的方法和策略&#xff1a; 1. **微服務架構&#xff1a;** 使用微服務架構&#xff0c;將系統拆分…

安卓快速開發

1.環境搭建 Android Studio下載網頁&#xff1a;https://developer.android.google.cn/studio/index.html 第一次新建工程需要等待很長時間&#xff0c;新建一個Empty Views Activity 項目&#xff0c;右上角選擇要運行的機器&#xff0c;運行就安裝上去了(打開USB調試)。 2…

【Linux】UDP協議——傳輸層

目錄 傳輸層 再談端口號 端口號范圍劃分 認識知名端口號 兩個問題 netstat與iostat pidof UDP協議 UDP協議格式 UDP協議的特點 面向數據報 UDP的緩沖區 UDP使用注意事項 基于UDP的應用層協議 傳輸層 在學習HTTP等應用層協議時&#xff0c;為了便于理解&#xff…

【實操】2023年npm組件庫的創建發布流程

2022年的實踐為基礎&#xff0c;2023年我再建一個組件庫【ZUI】。步驟回顧&#xff1a; 2022年的npm組件包的發布刪除教程_npm i ant-design/pro-components 怎么刪除_啥咕啦嗆的博客-CSDN博客 1.在gitee上創建一個項目,相信你是會的 2.創建初始化項目&#xff0c;看吧&#…

泛型類接口方法學習

一、泛型 1 概念 泛型(Generics)&#xff0c;廣泛的類型。最大用途是給集合容器添加標簽&#xff0c;讓開發人員知道容器里面放到是什么類型&#xff0c;并且自動對放入集合的元素進行類型檢查。 類比實參和形參&#xff0c;我們在對方法中的變量操作時&#xff0c;并沒有指…

深入理解高并發編程 - 深度解析 ThreadPoolExecutor 類

ThreadPoolExecutor 是 Java 標準庫中用于創建和管理線程池的核心類之一。它實現了 ExecutorService 接口&#xff0c;提供了豐富的線程池管理功能。下面將通過源碼解析來深入了解 ThreadPoolExecutor 類的工作原理和各個重要部分。 可以在 Java 源代碼中找到 ThreadPoolExecu…

【新品發布】ChatWork企業知識庫系統源碼

系統簡介 基于前后端分離架構以及Vue3、uni-app、ThinkPHP6.x、PostgreSQL、pgvector技術棧開發&#xff0c;包含PC端、H5端。 ChatWork支持問答式和文檔式知識庫&#xff0c;能夠導入txt、doc、docx、pdf、md等多種格式文檔。 導入數據完成向量化訓練后&#xff0c;用戶提問…

兩個pdf合并成一個pdf怎么合并?這幾個方法值得推薦

兩個pdf合并成一個pdf怎么合并&#xff1f;pdf文件的合并是一個很常見的需求&#xff0c;特別是在處理工作文件或學習資料時。為了更好的幫助你了解如何將兩個pdf文件合并成一個&#xff0c;下面就給大家詳細介紹幾種合并方法。 方法一&#xff1a;使用迅捷PDF轉換器 這是一款…

小紅書如何打造爆款引流吸粉?11個秘訣助你秒變達人!

在這個充滿信息和內容的時代&#xff0c;小紅書以其獨特的社交平臺特性和個性化內容吸引了眾多用戶。今天&#xff0c;我們就來揭秘小紅書關注戰略&#xff0c;了解如何在這個平臺上打造獨特的內容體驗&#xff0c;與用戶建立更親近的連接。#小紅書# 1、定位清晰&#xff0c;找…

【論文閱讀】基于深度學習的時序預測——Pyraformer

系列文章鏈接 論文一&#xff1a;2020 Informer&#xff1a;長時序數據預測 論文二&#xff1a;2021 Autoformer&#xff1a;長序列數據預測 論文三&#xff1a;2022 FEDformer&#xff1a;長序列數據預測 論文四&#xff1a;2022 Non-Stationary Transformers&#xff1a;非平…

Python技巧----解壓序列/可迭代對象賦值給多個變量

1 、解壓序列賦值給多個變量 我們這里說的不是正常情況的一一賦值比如下面 >>> data = [ ACME, 5, 9, (2012, 12, 1) ] >>> name, shares, price, date = data >>> name ACME

頁面跳轉和兩個頁面之間的數據傳遞-鴻蒙ArkTS

頁面跳轉和兩個頁面之間的數據傳遞-ArkTS 頁面跳轉和兩個頁面之間的數據傳遞-ArkTS關于router的使用**跳轉頁面的實現方式。**頁面接受跳轉傳遞的參數頁面返回及攜帶參數效果代碼Index頁面Second頁面 參考資料 頁面跳轉和兩個頁面之間的數據傳遞-ArkTS 本篇文章主要是對兩個頁面…

TiDB在科捷物流神州金庫核心系統的應用與實踐

業務背景 北京科捷物流有限公司于2003年在北京正式成立&#xff0c;是ISO質量管理體系認證企業、國家AAAAA級物流企業、海關AEO高級認證企業&#xff0c;注冊資金1億元&#xff0c;是中國領先的大數據科技公司——神州控股的全資子公司。科捷物流融合B2B和B2C的客戶需求&#…

網易有道押寶大模型,打響智能硬件突圍戰

本文轉載自產業科技 自今年開年以來&#xff0c;AI大模型這場火勢能不減&#xff0c;如今已燃到教育領域。 7月26日&#xff0c;網易有道舉辦了“powered by子曰”教育大模型應用成果發布會&#xff0c;推出國內首個教育領域垂直大模型“子曰”&#xff0c;并一口氣發布了基于…

conda - 調研介紹

介紹: conda 是一個工具, 也是一個可執行命令, 其核心功能是管理包與環境. conda 支持多種語言, 用來管理Python包是綽綽有余的. 這里注意區分conda和pip, pip命令可以在任何環境中安裝Python包, 而conda則是在conda環境中安裝任何語言包. 接觸過的conda主要有miniconda與anac…

matlab使用教程(15)—圖論基礎

1.有向圖和無向圖 1.1什么是圖&#xff1f; 圖是表示各種關系的節點和邊的集合&#xff1a; ? 節點 是與對象對應的頂點。 ? 邊 是對象之間的連接。 ? 圖的邊有時會有權重 &#xff0c;表示節點之間的每個連接的強度&#xff08;或一些其他屬性&#xff09;。 這些定…

MySQL8.xx一主兩從復制安裝與配置

搭建環境: 查看系統版本cat /etc/redhat-release [rootwww tools]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 查看內核版本cat /proc/version 目標: 一主兩從 主機IP 主機名稱 端口 搭建環境 安裝目錄192.168.1.100 docker…

MobaXterm sftp 不能拖拽文件夾了?

原因是我把mobaxterm設置成Windows管理員權限運行了,結果就不能拖動文件。把管理員權限去掉就恢復正常了。 原因是我把mobaxterm設置成Windows管理員權限運行了,結果就不能拖動文件。把管理員權限去掉就恢復正常了。 原因是我把mobaxterm設置成Windows管理員權限運行了,結果就不…

19.正則表達式

19.1什么是正則表達式 ●正則表達式( Regular Expression) 是用于匹配字符串中字符組合的模式。在JavaScript中&#xff0c; 正則表達式也是對象 ●通常用來查找、替換那些符合正則表達式的文本&#xff0c;許多語言都支持正則表達式 ●正則表達式在JavaScript中的使用場景: …