最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一起來(lái)學(xué)習(xí)TypeScript的類型

 更新時(shí)間:2022年02月16日 14:16:23   作者:Edison?Dont  
這篇文章主要為大家詳細(xì)介紹了TypeScript的類型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

前言

TypeScript學(xué)習(xí)筆記第一部分,關(guān)于TS的類型聲明以及基本類型。

一、類型聲明 

  • 類型聲明
    • 類型聲明是TS非常重要的一個(gè)特點(diǎn)
    • 通過(guò)類型聲明可以指定TS中變量(參數(shù)、形參)的類型
    • 指定類型后,當(dāng)為變量賦值時(shí),TS編譯器會(huì)自動(dòng)檢查值是否符合類型聲明,符合則賦值,否則報(bào)錯(cuò)
    • 簡(jiǎn)而言之,類型聲明給變量設(shè)置了類型,使得變量只能存儲(chǔ)某種類型的值
    • 語(yǔ)法:
let 變量: 類型;
let 變量: 類型 = 值;
function fn(參數(shù): 類型, 參數(shù): 類型): 類型{
    ...
}
  • 自動(dòng)類型判斷
    • TS擁有自動(dòng)的類型判斷機(jī)制
    • 當(dāng)對(duì)變量的聲明和賦值是同時(shí)進(jìn)行的,TS編譯器會(huì)自動(dòng)判斷變量的類型
    • 所以如果變量的聲明和賦值同時(shí)進(jìn)行時(shí),可以省略掉類型聲明
//先聲明類型再賦值
let a: string;
a = 'Hello';
//聲明類型并賦值
let b: number = 123;
//聲明變量和賦值同時(shí)進(jìn)行
let c = false; 
c = true; //編譯器自動(dòng)判斷變量c為boolean

二、類型

類型例子描述

number

1,-33, 2.5任意數(shù)字
string'hi', "HI"任意字符串
booleantrue,false布爾值true或false
字面量其本身限制變量的值就是該字面量的值
any*任意類型
unknown*類型安全的any
void空值(undefined)沒有值(或undefined)
never沒有值不能是任何值
object{name: "Alice"}任意的JS對(duì)象
array[1, 2, 3]任意JS數(shù)組
tuple[4, 5]元素,TS新增類型,固定長(zhǎng)度的數(shù)組
enumenum{A, B}枚舉,TS中新增類型

1.number

let a: number;
a = 10;
a = 33;
//a = 'hello'; 變量a的類型是number, 不能賦值字符串

2.string

let b: string;
b = 'hello';
//b = 123; 變量b的類型是字符串, 不能賦值number

3.boolean

let c: boolean;
c = true;

 4.字面量

let d: 10; // 此時(shí)d只能等于10
//let d = 11; 則會(huì)報(bào)錯(cuò),限制了該變量就是字面量的值(有點(diǎn)類似常量)

 5.聯(lián)合類型

let A: boolean | string; // 變量A既可以是布爾類型也可以是字符串類型
A = true;
A = "Hello";
A = false;
A = "World";
// 字面量的聯(lián)合類型限制變量B只能是"male"或"female"
let B: "male" | "female";
B = "male";
B = "female";
// B = "trans" 錯(cuò)誤

 6.any

任意類型,相當(dāng)于關(guān)閉了TS對(duì)類型的限制(盡量不要用)。

let a: any;
a = true;
a = "hi";
a = 123;
// 如果聲明變量不指定類型,則TS解析器會(huì)自動(dòng)判斷變量的類型為any
let b;
b = true;
b = "hi";
b = 123;

注意any類型的變量可以賦值給任意變量,容易出現(xiàn)問題。

// any 任意類型,相當(dāng)于關(guān)閉了ts對(duì)類型的限制(盡量不要用)
let B: any;
B = 10;
B = 'string';
B = true;
let S: string;
S = B; // any類型可以賦值給任意類型變量,容易出現(xiàn)問題。
 

 7.unknown

類型安全的any,不能直接賦值給其他變量。

let a: unknown;
a = 10;
a = "string";
a = true;
let b: string;
// b = a; 賦值時(shí)編譯器會(huì)報(bào)錯(cuò),不能將“unknown”類型分配給“string”。

如果一定要賦值,可以賦值前類型判斷或者使用斷言。

let a: unknown;
a = 10;
a = true;
a = "string";
let b: string;
/*
*  斷言:
*    1. 變量 as 類型
*    2. <類型> 變量
*/
b = a as string;
b = <string> a;
/*
*  賦值前類型判斷
*/
if (typeof c === 'string'){
    b = a;
}

 8.void

沒有返回值 => 返回的是空值 / undefined

function foo(): void {
}
console.log(typeof foo()); // => undefined
function foo1(): void{
    return undefined;
}
function foo3(){
    // 不寫void默認(rèn)為void
}
// 寫了返回值不寫返回值類型 => 自動(dòng)判斷返回值類型
function foo4(){
    return 1;
}
console.log(typeof foo4()); // => number

 9.never

沒有值,不能是任何值(連undefined都沒有)

function foo(): never{
    throw new Error('raise');
}

 10.object

let o: {name: string, age: number};
o = {
    name: "Edison",
    age: 25
}
// 定義可選參數(shù)
// [propName: string]: any 任意類型的屬性
let a: {name: string, [propName: string]: any};
b = {
    name: 'Edison',
    age: 24,
    gender: "female"
}
// 定義函數(shù)結(jié)構(gòu)
let foo: (a: number, b: number) => number;
foo = function (n1, n2) {
    return n1 + n2;
}

11.array

/*
*  元組: 長(zhǎng)度和類型還有順序必須與儲(chǔ)存元素一一對(duì)應(yīng)
*    [類型,類型]
*/
let a = [string, number];
a = ["hello", 123];
//以下報(bào)錯(cuò)
a = [123, "hello"];
a = [123];
a = ["hello"];
a = ["hello", 123, 456];

12.tuple

/*
*  元組: 長(zhǎng)度和類型還有順序必須與儲(chǔ)存元素一一對(duì)應(yīng)
*    [類型,類型]
*/
let a = [string, number];
a = ["hello", 123];
//以下報(bào)錯(cuò)
a = [123, "hello"];
a = [123];
a = ["hello"];
a = ["hello", 123, 456];

13.枚舉enum

enum Gender {
    Male = 0,
    Female = 1
}
let person: {name: string, gender: Gender};
person = {
    name: "Edison",
    gender: Gender.Male
}

14.其他

// & 同時(shí)滿足
let i: {name: string} & {age: number} & {gender: Gender};
i = person;
// i = b; Error 
// 類型別名
type myType = typeof i;
let person1: myType;
let person2: myType;

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容! 

相關(guān)文章

最新評(píng)論

澄城县| 孟州市| 涟水县| 阿城市| 元阳县| 普洱| 洛阳市| 榆中县| 昔阳县| 东城区| 宁城县| 叶城县| 望城县| 葫芦岛市| 泰兴市| 平安县| 略阳县| 阿城市| 张家港市| 福贡县| 汤阴县| 双江| 邵阳县| 西贡区| 惠安县| 光泽县| 文登市| 咸宁市| 来安县| 沐川县| 新河县| 章丘市| 西畴县| 兰考县| 山东省| 五峰| 侯马市| 高阳县| 镇康县| 陆河县| 云安县|