中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

怎么做網(wǎng)站 有空間注冊(cè)網(wǎng)站需要多少錢(qián)?

怎么做網(wǎng)站 有空間,注冊(cè)網(wǎng)站需要多少錢(qián)?,西安最近爆發(fā)什么病毒,要怎么判斷網(wǎng)站是什么cms做的文章目錄 1. 什么是 TypeScript?它與 JavaScript 有什么區(qū)別?2. TS 泛型、接口、泛型工具record、Pick、Omit3. TS unknow和any的區(qū)別,如何告訴編譯器unknow一定是某個(gè)類(lèi)型?4. 元組與常規(guī)數(shù)組的區(qū)別5. 什么是泛型,有什么作用&…

文章目錄

  • 1. 什么是 TypeScript?它與 JavaScript 有什么區(qū)別?
  • 2. TS 泛型、接口、泛型工具record、Pick、Omit
  • 3. TS unknow和any的區(qū)別,如何告訴編譯器unknow一定是某個(gè)類(lèi)型?
  • 4. 元組與常規(guī)數(shù)組的區(qū)別
  • 5. 什么是泛型,有什么作用?
  • 6. 什么是裝飾器?

1. 什么是 TypeScript?它與 JavaScript 有什么區(qū)別?

TypeScript 是一種由 Microsoft 開(kāi)發(fā)的開(kāi)源編程語(yǔ)言,它是 JavaScript 的一個(gè)超集,可以編譯成純 JavaScript。與 JavaScript 相比,TypeScript 引入了靜態(tài)類(lèi)型、類(lèi)、接口等概念,以提供更好的代碼可維護(hù)性、類(lèi)型檢查和開(kāi)發(fā)體驗(yàn)。

TypeScript 的優(yōu)勢(shì)是什么?

  • 靜態(tài)類(lèi)型檢查: TypeScript 允許聲明變量、函數(shù)等的類(lèi)型,從而在開(kāi)發(fā)過(guò)程中捕獲潛在的類(lèi)型錯(cuò)誤。
  • 代碼可讀性: 明確的類(lèi)型聲明使代碼更易讀懂和維護(hù)。
  • 智能感知: TypeScript 提供了更好的 IDE 智能感知,增強(qiáng)了代碼自動(dòng)完成和提示功能。
  • 重構(gòu)支持: 類(lèi)型信息可以幫助 IDE 在重構(gòu)代碼時(shí)更準(zhǔn)確地識(shí)別變量和函數(shù)引用。
  • 代碼提示: 使用 TypeScript,您可以在開(kāi)發(fā)過(guò)程中獲得更多的代碼提示和文檔。

TypeScript 中的基本類(lèi)型有哪些?

  • number: 數(shù)字類(lèi)型
  • string: 字符串類(lèi)型
  • boolean: 布爾類(lèi)型
  • null 和 undefined: 用于表示為空值
  • void: 表示沒(méi)有返回值的函數(shù)
  • any: 表示任意類(lèi)型
  • object: 表示非原始類(lèi)型的類(lèi)型
  • array: 數(shù)組類(lèi)型
  • tuple: 元組類(lèi)型
  • enum: 枚舉類(lèi)型

2. TS 泛型、接口、泛型工具record、Pick、Omit

泛型:目的是在成員之間提供有意義的約束,這些成員可以是:類(lèi)的實(shí)例成員、類(lèi)的方法、函數(shù)參數(shù)和函數(shù)返回值。
Record:它用來(lái)生成一個(gè)屬性為 K,類(lèi)型為 T 的類(lèi)型集合。
type Foo = Record<'a', string>生成的對(duì)象key都為’a’,value只能為string類(lèi)型
Pick:從 T 中將所有的 K 取出來(lái),并生成一個(gè)新的類(lèi)型。
const foo: Pick<IFoo, 'a'>使用 Pick 生成的新類(lèi)型只包含 a 屬性
Omit:用來(lái)忽略 T 中的 K 屬性
type UserWithoutEmail = Omit<User, 'email'> 忽略User中的email屬性

3. TS unknow和any的區(qū)別,如何告訴編譯器unknow一定是某個(gè)類(lèi)型?

  • any:任意類(lèi)型,放棄了ts類(lèi)型檢查,允許對(duì)其進(jìn)行任意操作
  • unknow:暫時(shí)未知類(lèi)型,之后仍然會(huì)進(jìn)行ts檢查,使用時(shí)需要進(jìn)行類(lèi)型檢查或類(lèi)型斷言后才能進(jìn)行操作,更加安全

將任何類(lèi)型賦值給any類(lèi)型的變量,并執(zhí)行任何操作,和js相同。
將任何值賦值給unknow類(lèi)型,但是需要進(jìn)行類(lèi)型檢查或者斷言才可以進(jìn)行操作。

1.類(lèi)型斷言

let value: unknow = 'hello';
let length: number = (value as string).length;

2.類(lèi)型判斷

function func(value: unknow): void {if (typeof value === 'string') {console.log(value.toUpperCase())} else if (Array.isArray(value)) {console.log(value.length)}
}

4. 元組與常規(guī)數(shù)組的區(qū)別

  • TypeScript 中的元組是一個(gè)數(shù)組,其中元素的類(lèi)型、順序和數(shù)量已知。例如,[string, number] 元組類(lèi)型期望第一個(gè)元素是字符串,第二個(gè)元素是數(shù)字。
  • 常規(guī)數(shù)組只知道元素的類(lèi)型,而不知道順序或計(jì)數(shù)。

5. 什么是泛型,有什么作用?

泛型(Generics)是指在定義函數(shù)、接口或類(lèi)的時(shí)候,不預(yù)先指定具體的類(lèi)型,而在使用的時(shí)候再指定類(lèi)型的一種特性。

function createArray<T>(length: number, value: T): Array<T> {let result: T[] = [];for (let i = 0; i < length; i++) {result[i] = value;}return result;
}
createArray<string>(3, 'x'); // ['x', 'x', 'x']

泛型約束:在函數(shù)內(nèi)部使用泛型變量的時(shí)候,由于事先不知道它是哪種類(lèi)型,所以不能隨意的操作它的屬性或方法,此時(shí)可以對(duì)泛型進(jìn)行約束

// 對(duì)泛型T進(jìn)行了約束,一定含有一個(gè)length屬性
interface Lengthwise {length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {console.log(arg.length);return arg;
}
loggingIdentity(7);

泛型作用:泛型可以用在函數(shù)、接口、類(lèi)
泛型優(yōu)點(diǎn)

  • 使用泛型的主要好處在于提高代碼的復(fù)用性和靈活性。通過(guò)泛型,我們可以編寫(xiě)不特定數(shù)據(jù)類(lèi)型的代碼,使得這些代碼可以適用于不同的數(shù)據(jù)類(lèi)型。這樣一來(lái),我們不需要為每種數(shù)據(jù)類(lèi)型編寫(xiě)重復(fù)的代碼,從而減少了代碼冗余。
  • 泛型還可以增加代碼的可讀性和可維護(hù)性。當(dāng)我們?cè)诰帉?xiě)泛型代碼時(shí),我們可以將代碼邏輯和數(shù)據(jù)類(lèi)型分離開(kāi)來(lái),使得代碼更加清晰和易于理解。同時(shí),泛型還可以在編譯時(shí)進(jìn)行類(lèi)型檢查,提前捕獲潛在的類(lèi)型錯(cuò)誤,減少了運(yùn)行時(shí)錯(cuò)誤的可能性。
  • 另外,泛型還使得我們可以更好地封裝代碼,隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。這樣可以提高代碼的安全性,并使得代碼更易于維護(hù)和升級(jí)。

6. 什么是裝飾器?

裝飾器是一種特殊類(lèi)型的聲明,它能夠被附加到類(lèi)聲明,方法, 訪問(wèn)符,屬性或參數(shù)上
是一種在不改變?cè)?lèi)和使用繼承的情況下,動(dòng)態(tài)地?cái)U(kuò)展對(duì)象功能
同樣的,本質(zhì)也不是什么高大上的結(jié)構(gòu),就是一個(gè)普通的函數(shù),@expression 的形式其實(shí)是Object.defineProperty的語(yǔ)法糖
expression求值后必須也是一個(gè)函數(shù),它會(huì)在運(yùn)行時(shí)被調(diào)用,被裝飾的聲明信息做為參數(shù)傳入
裝飾器作用:類(lèi)、方法/屬性、參數(shù)、訪問(wèn)器

function addAge(constructor: Function) {constructor.prototype.age = 18;
}
@addAge
class Person{name: string;age!: number;constructor() {this.name = 'huihui';}
}
let person = new Person();
console.log(person.age); // 18

裝飾器優(yōu)點(diǎn)

  • 代碼可讀性變強(qiáng)了,裝飾器命名相當(dāng)于一個(gè)注釋
  • 在不改變?cè)写a情況下,對(duì)原來(lái)功能進(jìn)行擴(kuò)展

后面的使用場(chǎng)景中,借助裝飾器的特性,除了提高可讀性之后,針對(duì)已經(jīng)存在的類(lèi),可以通過(guò)裝飾器的特性,在不改變?cè)写a情況下,對(duì)原來(lái)功能進(jìn)行擴(kuò)展。

http://m.risenshineclean.com/news/65269.html

相關(guān)文章:

  • 學(xué)校網(wǎng)站建設(shè)申請(qǐng)報(bào)告網(wǎng)絡(luò)推廣員有前途嗎
  • 百度聯(lián)盟做網(wǎng)站賺錢(qián)國(guó)內(nèi)建站平臺(tái)有哪些
  • 西安最好的互聯(lián)網(wǎng)公司排名泉州seo代理商
  • 用PYTHON3 做網(wǎng)站電腦優(yōu)化設(shè)置
  • 湖南雷鋒建設(shè)有限公司網(wǎng)站除了小紅書(shū)還有什么推廣平臺(tái)
  • 深圳全網(wǎng)營(yíng)銷(xiāo)平臺(tái)排名網(wǎng)站seo優(yōu)化公司
  • 網(wǎng)站seo博客公司seo營(yíng)銷(xiāo)
  • 商丘網(wǎng)站建設(shè)網(wǎng)站推廣如何提升網(wǎng)站seo排名
  • 做邀請(qǐng)函的網(wǎng)站百度開(kāi)戶(hù)返點(diǎn)
  • wordpress免費(fèi)公司官網(wǎng)主題seo搜索優(yōu)化邵陽(yáng)
  • 這么做3d展示網(wǎng)站自媒體引流推廣
  • 做曖曖曖昧網(wǎng)站北京網(wǎng)站建設(shè)運(yùn)營(yíng)
  • 深圳羅湖區(qū)網(wǎng)站營(yíng)銷(xiāo)策劃經(jīng)典案例
  • 長(zhǎng)春好的做網(wǎng)站公司排名手機(jī)網(wǎng)站制作軟件
  • 免費(fèi)個(gè)人博客注冊(cè)企業(yè)seo網(wǎng)站營(yíng)銷(xiāo)推廣
  • 東莞網(wǎng)站建設(shè) 旅游蘇州排名搜索優(yōu)化
  • 外貿(mào)建站培訓(xùn)港港網(wǎng)app下載最新版
  • 十天學(xué)會(huì)網(wǎng)站建設(shè)黑帽seo技術(shù)論壇
  • 深圳網(wǎng)站開(kāi)發(fā)定制西安網(wǎng)站制作
  • 阿里云虛擬主機(jī)做2個(gè)網(wǎng)站下拉關(guān)鍵詞排名
  • 谷歌站群系統(tǒng)如何推廣普通話
  • 備案?jìng)€(gè)人可以做視頻網(wǎng)站嗎網(wǎng)站關(guān)鍵詞排名優(yōu)化客服
  • b2c 電商網(wǎng)站 開(kāi)發(fā)框架設(shè)計(jì)百度指數(shù)是怎么計(jì)算的
  • 做公司網(wǎng)站時(shí)的英文簡(jiǎn)介網(wǎng)站生成app工具
  • 游戲前端轉(zhuǎn)網(wǎng)站開(kāi)發(fā)站長(zhǎng)工具seo綜合查詢(xún)收費(fèi)嗎
  • 國(guó)家建設(shè)協(xié)會(huì)官方網(wǎng)站網(wǎng)上接單平臺(tái)有哪些
  • wordpress網(wǎng)頁(yè)防破解seo實(shí)戰(zhàn)密碼第三版pdf
  • 做網(wǎng)站盡在美橙互聯(lián)世界羽聯(lián)最新排名
  • 做設(shè)計(jì)的靠譜兼職網(wǎng)站青島seo服務(wù)哪家好
  • 好的做網(wǎng)站的公司鄭州百度推廣托管