国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

這篇具有很好參考價(jià)值的文章主要介紹了兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

個(gè)人簡(jiǎn)介

??個(gè)人主頁(yè): 前端雜貨鋪
???♂?學(xué)習(xí)方向: 主攻前端方向,也會(huì)涉及到服務(wù)端(Node.js 等)
??個(gè)人狀態(tài): 2023屆本科畢業(yè)生,已拿多個(gè)前端 offer(秋招)
??未來打算: 為中國(guó)的工業(yè)軟件事業(yè)效力 n 年
??推薦學(xué)習(xí):??前端面試寶典 ??Vue2 ??Vue3 ??Vue2/3項(xiàng)目實(shí)戰(zhàn) ??Node.js??Three.js ??JS版算法
??個(gè)人推廣:每篇文章最下方都有加入方式,旨在交流學(xué)習(xí)&資源分享,快加入進(jìn)來吧

TypeScript入門

內(nèi)容 參考鏈接
TypeScript(零) —— 簡(jiǎn)介、環(huán)境搭建、第一個(gè)實(shí)例 搭建開發(fā)環(huán)境


認(rèn)識(shí) TypeScript

TypeScript 簡(jiǎn)介

TypeScript 是微軟開發(fā)的一個(gè)開源的編程語(yǔ)言,通過在 JavaScript 的基礎(chǔ)上添加靜態(tài)類型定義構(gòu)建而成。

TypeScript 的作用

我們都知道,JavaScript 是弱類型的語(yǔ)言,對(duì)于一些類型的限制并不是很明確。比如說我們編碼一個(gè)在兩個(gè)輸入框中輸入數(shù)字求和的加法小程序,這時(shí)候直接輸入到文本框的數(shù)字會(huì)被自動(dòng)轉(zhuǎn)換為字符串形式,就會(huì)得到 1 + 1 = 11 的奇怪結(jié)果。那么這個(gè)時(shí)候 TypeScript 就可以大顯身手,實(shí)現(xiàn) 1 + 1 = 2。

a. 規(guī)范我們的代碼
b. 代碼編譯階段就能及時(shí)發(fā)現(xiàn)問題
c. 在原生JS基礎(chǔ)上加上了一層類型定義

TypeScript 工作流

TSC (把 ts 文件轉(zhuǎn)換為 js 文件)的作用相當(dāng)于 Babel(把高級(jí)語(yǔ)法和代碼轉(zhuǎn)換為瀏覽器能識(shí)別的低級(jí)語(yǔ)法和代碼)。

編譯和運(yùn)行參考 TypeScript(零) —— 簡(jiǎn)介、環(huán)境搭建、第一個(gè)實(shí)例

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

上圖表示:ts 文件通過 tsc 命令把 ts 文件轉(zhuǎn)成了 js 文件。

TypeScript 的類型

相比于 JavaScript 的原始類型(基本數(shù)據(jù)類型)和對(duì)象類型(引用數(shù)據(jù)類型),TypeScript 也有自己的數(shù)據(jù)類型,內(nèi)容如下:

基本類型:boolean、string、number、array、tuple、enum、null、undefined、object、void、never、any

高級(jí)類型:union 組合類型、Nullable 可空類型、Literal 預(yù)定義類型

接下來,我們對(duì)不同類型進(jìn)行逐一詳細(xì)的探索…

Number 數(shù)字類型

對(duì)數(shù)字的定義只有一個(gè)籠統(tǒng)的 Number 表示,既能表示 整數(shù)、也能表示 浮點(diǎn)數(shù),甚至也可以表示 正負(fù)數(shù)。例如:1,3.3,-5 等等。

let num1 = 2
let num2 = 6
function add(n1: number, n2: number) {
    return n1 + n2
}
console.log(add(num1, num2))

之后終端執(zhí)行 tsc main.tsnode main.js,可以得出結(jié)果 8。

String 字符串類型

與 JavaScript 書寫方式及使用方法均一致。

'前端雜貨鋪'
"前端雜貨鋪"
`前端雜貨鋪`
let myName: string = "前端雜貨鋪"
console.log('myName', myName)

之后終端執(zhí)行 tsc main.tsnode main.js,可以得出以下結(jié)果。

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

Boolean 布爾類型

表示真、假,常用于處理判斷邏輯。

let isTrue: boolean = true
console.log('isTure', isTrue)

之后終端執(zhí)行 tsc main.tsnode main.js,可以得出以下結(jié)果。

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

Array 數(shù)組類型

數(shù)組中可以存放任意類型的數(shù)據(jù),JS中數(shù)組的寬容度非常大,TS也繼承了這一點(diǎn)。

以下三種寫法(list1、list2、list3)表示的完全一致,鼠標(biāo)移動(dòng)至 list 上編譯器均提示 number[],表示數(shù)字類型。

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

let list1: number[] = [1, 2, 3, 4]
let list2: Array<number> = [1, 2, 3, 4]
let list3 = [1, 2, 3, 4]

下面的 list 4 為 (string | number)[],表示字符串和數(shù)字類型。

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

let list4 = [1, '前端雜貨鋪']

下面的 list 5 為 any[],表示任意類型。

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

let list5: any[] = [1, '前端雜貨鋪', true]

Tuple 元組類型

固定長(zhǎng)度,固定類型的 Array,聲明元組的時(shí)候一定要事先指定類型。

let person: [number, string] = [1, "前端雜貨鋪"]

此時(shí),元組的長(zhǎng)度和類型都被固定住了,當(dāng)我們嘗試修改元素的長(zhǎng)度和類型都會(huì)報(bào)錯(cuò)。

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

注:元組類型有一個(gè) Bug,可以調(diào)用 push() 方法改變?cè)M的長(zhǎng)度。

Union 聯(lián)合類型

聯(lián)合類型表示一個(gè)變量同時(shí)支持兩個(gè)或者多個(gè)不同的類型。

let union : string | number

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

Literal 字面量類型

可以混合使用不同的類型。

let literal : 1 | "前端雜貨鋪" | true | [1, 2, 3]

示例:merge 求和(分為數(shù)字和字符串兩種方式)

function merge(n1: number | string, n2: number | string, resultType: "as-number" | "as-string") {
    if (resultType === 'as-string') {
        return n1.toString() + n2.toString()
    }
    if (typeof n1 === "string" || typeof n2 === "string") {
        return n1.toString() + n2.toString()
    } else {
        return n1 + n2
    }
}

let mergeNumber1 = merge(1, 1, "as-number")
let mergeNumber2 = merge(1, 1, "as-string")
let mergeString = merge("前端", "雜貨鋪", "as-string")

console.log(mergeNumber1)
console.log(mergeNumber2)
console.log(mergeString)

之后終端執(zhí)行 tsc main.tsnode main.js,可以得出以下結(jié)果。

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

Enum 枚舉類型

枚舉允許我們定義一組命名的常量。默認(rèn)情況下,我們獲取到對(duì)象的某個(gè)屬性打印出來的是該屬性的索引,神奇的是,我們可以 給對(duì)象里面的屬性賦值,這時(shí)候再獲取到對(duì)象的某個(gè)屬性時(shí)打印出來的就是 我們給屬性賦的值 了。

enum Color {
    red,
    yellow = '黃色',
    blue = 'blue'
}
let color1 = Color.red
console.log(color1)
let color2 = Color.blue
console.log(color2)
let color3 = Color.yellow
console.log(color3)

之后終端執(zhí)行 tsc main.tsnode main.js,可以得出以下結(jié)果。

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

Any 任意類型

Any 這個(gè)類型可以讓我們隨意定義類型,當(dāng)我們“懶得”定義復(fù)雜類型結(jié)構(gòu)的時(shí)候,可以合理的使用它。

let randomValue: any = 123
randomValue = true
randomValue = "前端雜貨鋪"
randomValue = {}

unknown 未知類型

unknown 不保證類型,但 可以保證類型安全,當(dāng)我們出現(xiàn)錯(cuò)誤編碼時(shí)(下面的數(shù)字 123 不能調(diào)用 toUpperCase() 方法),使用 unknow 編譯器會(huì)有報(bào)錯(cuò)提示。

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

我們可以做出以下適配,讓編譯器不報(bào)錯(cuò)。

let randomValue: unknown = 123
randomValue = true
randomValue = "前端雜貨鋪"
randomValue = {}
if (typeof randomValue === 'function') {
    randomValue()
}
if (typeof randomValue === 'string') {
    randomValue.toUpperCase()
}

void、undefined、never 類型

不存在時(shí)用 void,undefined 表示必須存在但可以不賦值,永遠(yuǎn)不會(huì)執(zhí)行完時(shí)用 never。

此時(shí)使用了 void(默認(rèn)就是 void,可加可不加),不添加返回值也一切正常。

function printResult() : void {
    console.log("前端雜貨鋪")
}
console.log("Hello", printResult())

之后終端執(zhí)行 tsc main.tsnode main.js,可以得出以下結(jié)果。

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

此時(shí)使用了 undefined,函數(shù)體里面必須有返回值,我們可以在函數(shù)體內(nèi)添加 return,不然會(huì)報(bào)錯(cuò)。

function printResult() : undefined {
    console.log("前端雜貨鋪")
    return
}
console.log("Hello", printResult())

之后終端執(zhí)行 tsc main.tsnode main.js,可以得出以下結(jié)果。

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型

此時(shí)使用了 never,一般用在拋出異?;蛘?promise 中。

function throwError(message: string, errorCode: number): never {
    throw {
        message,
        errorCode
    }
}
throwError("not found", 404)
function whileLoop(): never {
    while(true) {
        console.log("前端雜貨鋪")
    }
}

Type Assertions 類型適配

第一個(gè) endsWith() 出現(xiàn)的地方編譯器是不會(huì)自動(dòng)提示補(bǔ)全的,因?yàn)榇藭r(shí)的類型還是 any,而不是 string,我們可以使用 endsWith() 在下面代碼中第二次和第三次出現(xiàn)的地方的方式進(jìn)行類型適配,便可以實(shí)現(xiàn)自動(dòng)補(bǔ)全(在我們剛開始不明確類型,而后面明確類型后就可以使用這種類型適配的方式)

let message : any
message = "前端雜貨鋪"
message.endsWith("鋪")

(<string>message).endsWith("鋪")
(message as string).endsWith("鋪")

本章小結(jié)

存在即合理,TypeScript 的出現(xiàn)自有它的用途。TypeScript 作為 JavaScript 的超集,對(duì) JavaScript 進(jìn)行了一些列約束,使得弱類型的 JavaScript 變成強(qiáng)類型,這就會(huì)使得代碼更清晰、可讀性更高、提高了代碼的可讀性和可維護(hù)性,更適合開發(fā)大型應(yīng)用。

結(jié)合 Vue3 對(duì) TypeScript 更好的包容性,使用 Vue3 + TS 構(gòu)建大、中、小型應(yīng)用便成了一種大趨勢(shì)…


參考資料:

  1. TypeScript 百度百科
  2. TypeScript 入門講解 【作者:阿萊克斯劉】

兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型文章來源地址http://www.zghlxwxcb.cn/news/detail-501423.html


到了這里,關(guān)于兩小時(shí)快速入門 TypeScript 基礎(chǔ)(一)工作流、基本類型、高級(jí)類型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 工作流Camunda入門demo

    工作流Camunda入門demo

    先下載2個(gè)客戶端,分別是Camunda Platform和Camunda Modeler Camunda Platform是用來部署的 Camunda Modeler是用來設(shè)計(jì)流程的 具體的流程里的實(shí)際動(dòng)作還是需要我們自己寫代碼去訂閱實(shí)現(xiàn)的。 直接上官網(wǎng)的2個(gè)下載地址,下載后不需要配置環(huán)境變量直接就能run,我這邊本地pc是windows的所以下

    2023年04月08日
    瀏覽(17)
  • 一步到位!快速精通Git工作流及實(shí)戰(zhàn)技巧詳解

    一步到位!快速精通Git工作流及實(shí)戰(zhàn)技巧詳解

    Git是一個(gè)分布式版本控制系統(tǒng)。 1.備份 小明負(fù)責(zé)的模塊就要完成了,就在即將release之前的一瞬間,電腦突然藍(lán)屏。硬盤光榮犧牲!幾個(gè)月來的努力付之東流。 場(chǎng)景二:代碼還原 這個(gè)項(xiàng)目中需要一個(gè)很復(fù)雜的功能,老王摸索了一個(gè)星期終于有眉目了,可是這被改得面目全非的

    2024年03月15日
    瀏覽(27)
  • Flowable工作流入門&完整SpringBoot案例

    Flowable工作流入門&完整SpringBoot案例

    工作流(Workflow),是指對(duì)于一項(xiàng)業(yè)務(wù),按照規(guī)定的流程,逐級(jí)傳遞、申請(qǐng)、執(zhí)行等,并且受到了嚴(yán)格控制的一種業(yè)務(wù)過程。 BPM(Business Process Management)是指對(duì)于某項(xiàng)業(yè)務(wù)的整個(gè)生命周期進(jìn)行全面管理的一種模式,最核心的內(nèi)容包括了工作流、決策、交互等。在這些管理過程

    2024年02月12日
    瀏覽(20)
  • Excel與Unity工作流(二):基礎(chǔ)對(duì)話框架

    Excel與Unity工作流(二):基礎(chǔ)對(duì)話框架

    本文將演示在unity中實(shí)現(xiàn)類似galgame的對(duì)話效果,并且通過Excel進(jìn)行文本、圖片、選項(xiàng)、賦值、音樂的配置 (該圖主要是展示版面和大致目標(biāo)效果,與本文關(guān)系不大) (來源:《無期迷途》) 每點(diǎn)擊一次鼠標(biāo),就出現(xiàn)下一個(gè)對(duì)話/或者出現(xiàn)選項(xiàng); 如果出現(xiàn)選項(xiàng),點(diǎn)擊選項(xiàng),會(huì)有不同

    2024年04月14日
    瀏覽(24)
  • 深度學(xué)習(xí)模型部署(六)TensorRT工作流and入門demo

    深度學(xué)習(xí)模型部署(六)TensorRT工作流and入門demo

    官方給出的步驟: 總結(jié)下來可以分為兩大部分: 模型生成:將onnx經(jīng)過一系列優(yōu)化,生成tensorrt的engine模型 選擇batchsize,選擇精度precision,模型轉(zhuǎn)換 模型推理:使用python或者C++進(jìn)行推理 生成trt模型: 然后就坐等輸出模型,我們可以根據(jù)log信息看一下tensorRT都干了什么: 得到

    2024年03月13日
    瀏覽(20)
  • Flutter 中的單元測(cè)試:從工作流基礎(chǔ)到復(fù)雜場(chǎng)景

    Flutter 中的單元測(cè)試:從工作流基礎(chǔ)到復(fù)雜場(chǎng)景

    對(duì) Flutter 的興趣空前高漲——而且早就應(yīng)該出現(xiàn)了。 Google 的開源 SDK 與 Android、iOS、macOS、Web、Windows 和 Linux 兼容。單個(gè) Flutter 代碼庫(kù)支持所有這些。單元測(cè)試有助于交付一致且可靠的 Flutter 應(yīng)用程序,通過在組裝之前先發(fā)制人地提高代碼質(zhì)量來確保不會(huì)出現(xiàn)錯(cuò)誤、缺陷和缺

    2024年02月08日
    瀏覽(24)
  • 工作流Flowable入門教程:flowableUI的安裝使用,RepositoryService、RuntimeService、TaskService、HistoryService的使用

    工作流Flowable入門教程:flowableUI的安裝使用,RepositoryService、RuntimeService、TaskService、HistoryService的使用

    Flowable是一個(gè)使用Java編寫的輕量級(jí)業(yè)務(wù)流程引擎。Flowable流程引擎可用于部署B(yǎng)PMN 2.0流程定義(用于定義流程的行業(yè)XML標(biāo)準(zhǔn)), 創(chuàng)建這些流程定義的流程實(shí)例,進(jìn)行查詢,訪問運(yùn)行中或歷史的流程實(shí)例與相關(guān)數(shù)據(jù),等等。這個(gè)章節(jié)將用一個(gè)可以在你自己的開發(fā)環(huán)境中使用的例

    2024年01月18日
    瀏覽(28)
  • 【工作流】Activiti工作流簡(jiǎn)介以及Spring Boot 集成 Activiti7

    【工作流】Activiti工作流簡(jiǎn)介以及Spring Boot 集成 Activiti7

    什么是工作流? 工作流指通過計(jì)算機(jī)對(duì)業(yè)務(wù)流程進(jìn)行自動(dòng)化管理,實(shí)現(xiàn)多個(gè)參與者按照預(yù)定義的流程去自動(dòng)執(zhí)行業(yè)務(wù)流程。 文章源碼托管:https://github.com/OUYANGSIHAI/Activiti-learninig Activiti5是由Alfresco軟件在2010年5月17日發(fā)布的業(yè)務(wù)流程管理(BPM)框架,它是覆蓋了業(yè)務(wù)流程管理、

    2024年02月08日
    瀏覽(31)
  • 云原生離線工作流編排利器 -- 分布式工作流 Argo 集群

    云原生離線工作流編排利器 -- 分布式工作流 Argo 集群

    作者:莊宇 在現(xiàn)代的軟件開發(fā)和數(shù)據(jù)處理領(lǐng)域,批處理作業(yè)(Batch)扮演著重要的角色。它們通常用于數(shù)據(jù)處理,仿真計(jì)算,科學(xué)計(jì)算等領(lǐng)域,往往需要大規(guī)模的計(jì)算資源。隨著云計(jì)算的興起,阿里云批量計(jì)算和 AWS Batch 等云服務(wù)提供了管理和運(yùn)行這些批處理作業(yè)的平臺(tái)。 隨

    2024年01月24日
    瀏覽(28)
  • Camunda 7工作流引擎 API 以及與Springboot集成實(shí)現(xiàn)工作流配置全紀(jì)錄

    Camunda 7工作流引擎 API 以及與Springboot集成實(shí)現(xiàn)工作流配置全紀(jì)錄

    項(xiàng)目中需要用到工作流引擎來設(shè)計(jì)部分業(yè)務(wù)流程,框架選型最終選擇了 Camunda7,關(guān)于 Camunda以及 Activity 等其他工作流 引擎的介紹及對(duì)比不再介紹,這里只介紹與現(xiàn)有Springboot項(xiàng)目的集成以及具體使用及配置 流程(PROCESS): 通過工具建模最終生成的BPMN文件,里面有整個(gè)流程的定

    2024年02月10日
    瀏覽(46)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包