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

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

千鋒教育前端Vue3.0全套視頻教程(Kerwin2023版,Vue.js零基礎(chǔ)

2023-07-21 20:00 作者:Wang琹  | 我要投稿

TS:解決大型項(xiàng)目,項(xiàng)目小不建議用ts;

????可以在編譯期間發(fā)現(xiàn)并糾正錯(cuò)誤【靜態(tài)檢查】

????強(qiáng)類型、支持靜態(tài)和動(dòng)態(tài)類型

????最終編譯成js代碼,使瀏覽器可以理解

JS:一種腳本語(yǔ)言,用于創(chuàng)建動(dòng)態(tài)網(wǎng)頁(yè)

????一種解釋型語(yǔ)言,只能在運(yùn)行時(shí)發(fā)現(xiàn)錯(cuò)誤

????弱類型,沒(méi)有靜態(tài)類型

????可以直接在瀏覽器中使用

ts它是不能直接在瀏覽器或nodejs環(huán)境中來(lái)運(yùn)行的,它是需要編譯成js才能被運(yùn)行

xxx.ts => tsc?命令來(lái)編譯?===> xxx.js

類型

內(nèi)置類型全小寫

let/const/var 變量名:類型 = 值

注:如果你在聲明變量時(shí)就給值,則可以不指定類型,ts可以自動(dòng)來(lái)推斷出來(lái)變量的類型


=字符串=

let arg = '張三'?arg不需要指定,自動(dòng)識(shí)別出是字符串類型

let arg:string

arg = '字符串'

=bigint=

let oneHundred:bigint = BigInt(100);


=symbol類型=

let?s:symbol = Symbol();

let s:symbol

s = Symbol('key')


=數(shù)組=

字符串?dāng)?shù)組:數(shù)組里面的元素它的類型只能是字符串,不能是別的類型 (arr = [這里面只能寫字符串])

let arr:string[ ]

arr = ['aaa','bbb']

通過(guò)泛型類定義數(shù)組元素值類型

let arr: Array<string>

arr = ['aaa','bbb']

ts接口interface兩個(gè)作用:一個(gè)為類所實(shí)現(xiàn),一個(gè)定義類型

元素值是數(shù)字

let arr:number[ ]

arr = [1,2,3]

=元組tuple=

元組是數(shù)組的一種特殊形式,一個(gè)數(shù)組如果知道它的長(zhǎng)度且它里面每個(gè)元素的類型是已知的,則它就為元組 (一般定義成元組之后不能改變長(zhǎng)度和類型)

let tuple:[ string,number,boolean ]

tuple = [ ' a ', 1, true ]


=Any 與 Unknown=

都是可以賦值任意類型值,any沒(méi)有類型檢查,而unknown它是會(huì)有類型檢查,在使用時(shí)會(huì)進(jìn)行類型檢查

unknown還可以進(jìn)行類型轉(zhuǎn)換,而any不具備,定義成any就相當(dāng)于在ts中寫js了

????????????????===any

let arg1:any

arg1 = 1

arg1 = 'aaa'

arg1 = true

arg1 = { id:1 }

any在賦值和調(diào)用時(shí),都不會(huì)進(jìn)行類型的檢查,相當(dāng)于寫js

console.log(arg1 +1)

?===unknown

let arg2:unknown

arg2 = 1

arg2 = 'aaa'

arg2 = true

arg2 = { id:1 }

unknown在賦值時(shí)可以給值,但在使用變量時(shí),會(huì)進(jìn)行類型的檢查

所以就需要你在使用時(shí),給unknown指定明確的類型?方法:斷言 as

console.log(arg2 +1)×

console.log((arg2 as number) +1)√

;(arg2 as { id:number }).id??;的作用?

let age:string = '10'

let aa:number

// unknown 用來(lái)轉(zhuǎn)換類型,先將age轉(zhuǎn)成大范圍的類型,再轉(zhuǎn)成具體的類型

aa = age as unknown as number


==函數(shù)

定義一個(gè)沒(méi)有參數(shù)也沒(méi)有返回值的函數(shù)

1、沒(méi)有寫return??function?fn()?{?}

2、寫了return但只有return??function?fn()?{?return; }

3、寫了return但后面是 undefined

如果函數(shù)沒(méi)有返回值,可以給這個(gè)函數(shù)指定它沒(méi)有返回值?void

function fn(): void {

??return?undefined

??return;

}


定義一個(gè)函數(shù)它有參數(shù),參數(shù)類型是指定的,且有返回值

function fn( id: number, name: string) :string {

??return?id + name?//字符串和數(shù)字相加一定會(huì)轉(zhuǎn)成字符串

}

//可選參數(shù) 給參數(shù)前面加一個(gè)? 表示當(dāng)前參數(shù)它是可選的,可以有也可以沒(méi)有

function fn( id: number, name ?: string) :string {

??// 類型斷言

??return?id + ( name as string )?

??// 非空斷言,name值它一定有值,一定不會(huì)為undefined

??return?id + name !

??// 類型收縮?typeof??instanceof in extends

??if ( typeof name === 'string' ){

????return id + name

??return `編號(hào): ${ id } `

}


自動(dòng)類型

function?fn () {

??return?1

}

const fn = ()?=> 1

==對(duì)象類型

聲明了一個(gè)user變量,它的類型是一個(gè)對(duì)象,其中必須要有的屬性為id和name分類對(duì)象類型的number和string,二age屬性它是一個(gè)可選的,可以有也可以沒(méi)有有的話,類型一定要有number

let user:{ id:number; name:string; age?:number }

user = { id: 1, name: ' aaaa', age: 20 }

user = { id: 1, name: ' aaaa' }

數(shù)組對(duì)象,數(shù)組的元素它是一個(gè)對(duì)象

let users: { id: number; name: string; age?: number } [ ]

let users : Array<{ id: number; name: string; age?: number }>

users = [ { id : 1, name: 'aaaa', age: 20 }]

動(dòng)態(tài)屬性,此對(duì)象它必須要有id和name屬性,還可以有更多的其他屬性,其他屬性必須要滿足key是string類型,值是any任意類型

下面用any還是unknown取決對(duì)于類型的要求嚴(yán)不嚴(yán)格

let user: { id: number; name: string; [ key: string ]: any }

let user: { id: number; name: string; [ key: string ]: unknown }

user = { id: 1, name: 'aa', a: 2,b: { other: 'bbb' }, c: 'aaa' }


索引類型

let user: { id: number; name: string; [ key: string ]: any }

typeof user => 得到user變量它的類型

let id: ( typeof user ) [ ' id ' ]


==定義類型 type[ 類型別名 ] / interface

type定義類型方式,它可以定義任意類型情況

type userType =?{ id: string; name: string;?}

type userType =?{ id: string; name: string; age ?: number }

let user1:userType

let user2:userType

let id:userType[ ' id ' ]


let user = { id: 1, name: ' aa ' }

根據(jù)變量的值,來(lái)聲明一個(gè)類型

type userType = typeof user


把原來(lái)的string,相當(dāng)于起了一個(gè)別名,叫urlType

type urlType = string

type urlType = number

let url:urlType

url = ' aa '

給函數(shù)[ 賦值定義的函數(shù) ]的參數(shù)及返回值來(lái)限制類型?函數(shù)簽名

聲明一個(gè)函數(shù)類型,它必須要有兩個(gè)參數(shù),參數(shù)1類型必須是number,參數(shù)2類型必須是string,返回值類型必須為string

注:參數(shù)的名稱,可以任意去起名稱,不重要

一流人才定義規(guī)則,二流去實(shí)現(xiàn)

type fnType = ( id:number, name:string) => string???// id 和 name 只是占位,名字可以隨便寫;重要的是類型

const??fn: fnType = ( id: string,name:string)=>?' aa '


type聲明的類型,名稱不能重復(fù)

type?t1?=?{ id:number }

typet?t1?=?{ name:string }


聯(lián)合類型

一個(gè)變量它可以擁有多個(gè)類型

type?idType = number | string?// 既可以傳數(shù)字也可以傳字符串

let?id: idType

id = ' a '

id = 1


type idType = number | string | boolean | null

// 根據(jù)上面已有的聯(lián)合類型,派生出一個(gè)新的類型

type newIdType = Exclude<idType, string | null> // 在指定的聯(lián)合類型中,排除掉不要的類型,生成一個(gè)新類型?【黑名單】

type newIdType = Extract<idType, string | null>?// 保留要的聯(lián)合類型,生成一個(gè)新類型?【白名單】

any 和 unknown在聯(lián)合類型時(shí)它的最終類型

返回的還是any和unknown

任何類型和any或unknown聯(lián)合時(shí),最終類型都是any或unknown

type a = string | number | any

type b = string | number | unknown


*交叉類型

聯(lián)合類型的交叉,它只會(huì)取交集

type?t1 = number | string | boolean

type?t2 = boolean | string | boolean

type?t3 = t1 & t2 // 對(duì)于聯(lián)合類型的交叉,t3取 t1 和 t2的交集

對(duì)象類型,取的是并集

交叉類型,可以用它來(lái)完成對(duì)已有類型屬性的擴(kuò)展

如果在合并時(shí),有相同的字段,則類型最好是一致的;如果不一致,則前面的類型一定要比后面的類型范圍要大

協(xié)變和逆變:讓類型可用

字面量類型

type lessonType = 'css' | 0 | 1 | true | { id: 1 } | ' hahaha '

let lesson: lessonType

lesson = 'css'??// 寫成上面的那些值任意的一個(gè)就不會(huì)報(bào)錯(cuò),不是上面的就會(huì)報(bào)錯(cuò)

lesson = { id: 1 }


let objType = { id: number, name: string?}

let obj: objType = { id: 1, name: 'aaa' }

obj.id //不會(huì)報(bào)錯(cuò)


function getValue( obj: objType, key:?string ) {

???// key它可能不在你定義這個(gè)類型中?

???return obj [ key ]???// 會(huì)報(bào)錯(cuò)

}


let objType = { id: number, name: string ;age:number }

let obj: objType = { id: 1, name: 'aaa' ,age: 10 }

// 綠色的就是字面量類型

function getValue( obj: objType, key:?' id ' | ' name ') {

???// key它可能不在你定義這個(gè)類型中?

???return obj [ key ]???

}


never ts特有

此類型,一般你用不到,除非你寫ts很底層的方案

返回 never 的函數(shù)必須存在無(wú)法達(dá)到的終點(diǎn)

千鋒教育前端Vue3.0全套視頻教程(Kerwin2023版,Vue.js零基礎(chǔ)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
古交市| 珲春市| 施甸县| 绵阳市| 镇巴县| 双峰县| 苏尼特右旗| 苏尼特左旗| 龙门县| 连云港市| 德清县| 尚志市| 稻城县| 万源市| 汨罗市| 西林县| 纳雍县| 南丰县| 顺平县| 佛坪县| 黎城县| 淮阳县| 德安县| 屏边| 饶平县| 高要市| 岐山县| 德庆县| 大关县| 伊吾县| 怀宁县| 靖边县| 泰顺县| 利川市| 无锡市| 平远县| 二连浩特市| 哈尔滨市| 县级市| 福建省| 威远县|