中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

Typescript的基本使用方法有哪些

本篇內(nèi)容主要講解“Typescript的基本使用方法有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Typescript的基本使用方法有哪些”吧!

10年積累的成都做網(wǎng)站、網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有瑪曲免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

超集是集合論的術(shù)語

說到超集,不得不說另一個,子集,怎么理解這兩個概念呢,舉個例子

如果一個集合A里面的的所有元素集合B里面都存在,那么我們可以理解集合A是集合B的子集,反之集合B為集合A的超集

現(xiàn)在我們就能理解為 Typescript 里包含了 Javascript  的所有特性,這也意味著我們可以將.js后綴直接命名為.ts文件跑到TypeScript的編繹系統(tǒng)中

Typescript 解決了什么問題

一個事物的誕生一定會有其存在的價值

那么 Typescript 的價值是什么呢?

回答這個問題之前,我們有必要先來了解一下 Typescript 的工作理念

本質(zhì)上是在 JavaScript 上增加一套靜態(tài)類型系統(tǒng)(編譯時進行類型分析),強調(diào)靜態(tài)類型系統(tǒng)是為了和運行時的類型檢查機制做區(qū)分,TypeScript  的代碼最終會被編譯為 JavaScript

我們再回到問題本身,縮小一下范圍,Typescript 創(chuàng)造的價值大部分是在開發(fā)時體現(xiàn)的(編譯時),而非運行時,如

  • 強大的編輯器智能提示 (研發(fā)效率,開發(fā)體驗)

  • 代碼可讀性增強 (團隊協(xié)作,開發(fā)體驗)

  • 編譯時類型檢查 (業(yè)務(wù)穩(wěn)健,前端項目中Top10 的錯誤類型低級的類型錯誤占比達到70%)

變量申明

基本類型

let isDone: boolean = false let num: number = 1 let str: string = 'vue3js.cn' let arr: number[] = [1, 2, 3]  let arr2: Array<number> = [1, 2, 3] // 泛型數(shù)組 let obj: Object = {} let u: undefined = undefined; let n: null = null;

類型補充

  • 枚舉 Enum

使用枚舉類型可以為一組數(shù)值賦予友好的名字

enum LogLevel {   info = 'info',   warn = 'warn',   error = 'error', }
  • 元組 Tuple

允許數(shù)組各元素的類型不必相同。比如,你可以定義一對值分別為 string和number類型的元組

// Declare a tuple type let x: [string, number]; // Initialize it x = ['hello', 10]; // OK // Initialize it incorrectly x = [10, 'hello']; // Error
  • 任意值 Any

表示任意類型,通常用于不確定內(nèi)容的類型,比如來自用戶輸入或第三方代碼庫

let notSure: any = 4; notSure = "maybe a string instead"; notSure = false; // okay, definitely a boolean
  • 空值 Void

與 any 相反,通常用于函數(shù),表示沒有返回值

function warnUser(): void {     console.log("This is my warning message"); }
  • 接口 interface

類型契約,跟我們平常調(diào)服務(wù)端接口要先定義字段一個理

如下例子 point 跟 Point 類型必須一致,多一個少一個也是不被允許的

interface Point {     x: number     y: number     z?: number     readonly l: number } const point: Point = { x: 10, y: 20, z: 30, l: 40 } const point2: Point = { x: '10', y: 20, z: 30, l: 40 } // Error  const point3: Point = { x: 10, y: 20, z: 30 } // Error  const point4: Point = { x: 10, y: 20, z: 30, l: 40, m: 50 } // Error

可選與只讀 ? 表示可選參, readonly 表示只讀

const point5: Point = { x: 10, y: 20, l: 40 } // 正常 point5.l = 50 // error

函數(shù)參數(shù)類型與返回值類型

function sum(a: number, b: number): number {     return a + b }

配合 interface 使用

interface Point {     x: number     y: number }  function sum({ x,  y}: Point): number {     return x + y }  sum({x:1, y:2}) // 3

泛型

泛型的意義在于函數(shù)的重用性,設(shè)計原則希望組件不僅能夠支持當前的數(shù)據(jù)類型,同時也能支持未來的數(shù)據(jù)類型

  • 比如

根據(jù)業(yè)務(wù)最初的設(shè)計函數(shù) identity 入?yún)镾tring

function identity(arg: String){  return arg } console.log(identity('100'))

業(yè)務(wù)迭代過程參數(shù)需要支持 Number

function identity(arg: String){  return arg } console.log(identity(100)) // Argument of type '100' is not assignable to parameter of type 'String'.

為什么不用any呢?

使用 any 會丟失掉一些信息,我們無法確定返回值是什么類型

泛型可以保證入?yún)⒏祷刂凳窍嗤愋偷模且环N特殊的變量,只用于表示類型而不是值

語法(arg:T):T 其中T為自定義變量

const hello : string = "Hello vue!" function say<T>(arg: T): T {     return arg; } console.log(say(hello)) // Hello vue!

泛型約束

我們使用同樣的例子,加了一個console,但是很不幸運,報錯了,因為泛型無法保證每種類型都有.length 屬性

const hello : string = "Hello vue!" function say<T>(arg: T): T {  console.log(arg.length) // Property 'length' does not exist on type 'T'.     return arg; } console.log(say(hello)) // Hello vue!

從這里我們也又看出來一個跟any不同的地方,如果我們想要在約束層面上就結(jié)束戰(zhàn)斗,我們需要定義一個接口來描述約束條件

interface Lengthwise {     length: number; }  function say<T extends Lengthwise>(arg: T): T {  console.log(arg.length)     return arg; } console.log(say(1))  // Argument of type '1' is not assignable to parameter of type 'Lengthwise'. console.log(say({value: 'hello vue!', length: 10})) // { value: 'hello vue!', length: 10 }

交叉類型

交叉類型(Intersection Types),將多個類型合并為一個類型

interface foo {     x: number } interface bar {     b: number } type intersection = foo & bar const result: intersection = {     x: 10,     b: 20 } const result1: intersection = {     x: 10 }  // error

聯(lián)合類型

交叉類型(Union Types),表示一個值可以是幾種類型之一。我們用豎線 | 分隔每個類型,所以 number | string |  boolean表示一個值可以是 number, string,或 boolean

type arg = string | number | boolean const foo = (arg: arg):any =>{      console.log(arg) } foo(1) foo('2') foo(true)

函數(shù)重載

函數(shù)重載(Function Overloading),  允許創(chuàng)建數(shù)項名稱相同但輸入輸出類型或個數(shù)不同的子程序,可以簡單理解為一個函數(shù)可以執(zhí)行多項任務(wù)的能力

例我們有一個add函數(shù),它可以接收string類型的參數(shù)進行拼接,也可以接收number類型的參數(shù)進行相加

function add (arg1: string, arg2: string): string function add (arg1: number, arg2: number): number  // 實現(xiàn) function add <T,U>(arg1: T, arg2: U) {   // 在實現(xiàn)上我們要注意嚴格判斷兩個參數(shù)的類型是否相等,而不能簡單的寫一個 arg1 + arg2   if (typeof arg1 === 'string' && typeof arg2 === 'string') {     return arg1 + arg2   } else if (typeof arg1 === 'number' && typeof arg2 === 'number') {     return arg1 + arg2   } }  add(1, 2) // 3 add('1','2') //'12'

到此,相信大家對“Typescript的基本使用方法有哪些”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

本文名稱:Typescript的基本使用方法有哪些
本文來源:http://m.2m8n56k.cn/article42/pecjhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊網(wǎng)站維護品牌網(wǎng)站設(shè)計全網(wǎng)營銷推廣python網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
主站蜘蛛池模板: 午夜在线社区视频 | 国产精品v一区二区三区 | 韩国美女爽快一毛片免费 | 久久w5ww成w人免费不卡 | 日韩中文字幕在线亚洲一区 | 欧美日韩在线观看精品 | 亚洲一区二区精品视频 | 国产女人自拍 | 成人免费国产欧美日韩你懂的 | 成人爱做日本视频免费 | 欧美一区二区三区精品国产 | 在线视频一区二区三区三区不卡 | 亚洲视频在线观看网址 | 国产男女免费完整视频 | 亚洲国内精品 | 一区二区三区在线 | 九九精品视频一区在线 | 男人天堂社区 | 亚洲欧美久久精品1区2区 | 久草天堂| 在线观看的毛片 | 日本高清一本二本三本如色坊 | 毛片一级免费 | 大片毛片女女女女女女女 | 91福利国产在线观一区二区 | 欧美成人全部费免网站 | 爽爽日本在线视频免费 | 日韩欧美中文字幕一区二区三区 | 亚洲欧美日韩国产专区一区 | 亚洲成a人 | 在线另类 | 亚洲免费视频一区二区三区 | 美女视频黄a全部 | 刺激免费视频 | 高清国产在线观看 | 成人二区| 美一级片 | 精品一区二区三区亚洲 | 日韩欧美国产精品第一页不卡 | 日本三级香港三级人妇 m | 一级片a|