TS 的型別宣告和變數型別

2022-10-09 00:09:23 字數 2798 閱讀 3591

一、型別宣告

型別宣告是 ts 非常重要的乙個特點,通過型別宣告可以指定 ts 中變數(引數、形參)的型別

當為變數賦值時,ts編譯器會自動檢查值是否符合型別宣告,符合則賦值,否則報錯

簡而言之,型別宣告給變數設定了型別,使得變數只能出儲存某種型別的值,這是 js 不具備的

語法:

let a: number;

a = 7;

a = 'luck';//

此行**會報錯

let a = true

;a = false;

function

sum(a: number, b: number): number

二、變數型別

1、字面量

let a1: 10;  

a1 = 10;

//後面使用時不可修改,類似常量

//可以使用 | 來連線多個型別(聯合型別),表示『或』

let b1: "male" | "female";

b1= "male";

b1= "female";

let c1 :

boolean |string;

c1 = true

;c1 = 'hello';

2、any —— 任意型別乙個變數設定型別為any後相當於對該變數關閉了ts的型別檢測

//

let d:any;(顯示的any)

//宣告變數如果不指定型別,則ts解析器會自動判斷變數的型別為any(隱式的any)

let d;

d = 10;

d = 'hello';

d = 'true';

3、unknown —— 未知型別實際上就是乙個型別安全的any

let e: unknown;

e = 10;

e = true

;e = "hello";

any型別的變數可以賦值給任意變數;但unknown 型別的變數不能直接賦值給其他變數

let s:string;

//d的型別是any,它可以賦值給任意變數

let d;

s =d;

let e: unknown;

e = 'hello';

s = e;//

會報錯,e的型別是unknown,不能直接賦值給其他變數

if (typeof e === "string")

型別斷言 ——可以用來告訴解析器變數的實際型別

/*

語法: 變數 as 型別

《型別》變數

*/s =e as string;

s = e;

4、void —— 表示空值以函式為例,就表示沒有返回值(或返回undefined)的函式

function fn2(): void

5、never表示永遠不會返回結果;沒有值(比較少用,一般是用來丟擲錯誤)

function

fn3(): never

6、object用來指定物件中可以包含哪些屬性

/*

語法: 在屬性名後面加上?,表示屬性是可選的

*/let b: ;

b = {}; //

沒有的話就會報錯

b = ;

let c1: ;

c1 = //

會報錯,多餘了c

//

[propname: string]: any 表示可以多餘任意型別的屬性

let c:

c =

7、array

/*

陣列的型別宣告:

型別array《型別》

*///

string 表示字串陣列

let e1:string;

e1 = ['a','b','c'];

//number 表示數值陣列

let f: number;

let g: array

;g = [1, 2, 3];

8、tuple(ts新增型別

就是固定長度的陣列

/*

語法:[型別, 型別, 型別]

*/let h: [string, number];

h = ['hello', 123];

9、enum(ts新增型別)列舉可以把所有可能的值都列舉出來

enum gender

let i: ;

i =console.log(i.gender === gender.male)

ts 宣告變數型別

ts中,宣告變數時可以同時指定其型別,格式 var name string forrest 這樣,當 name 1 會報錯,因為name已經指定了string型別如果想指定變數為可變型別,可以 var name any forrest 注意,即使name被指定為string型別,在ts中不能複製數字...

ts 變數宣告

小心作用域規則 小心解構 塊級作用域的時間死區 const變數宣告原則 var a 10 function f function f var g f g returns 11 作用域規則 全域性作用域 區域性作用域 這些作用域規則可能會引發一些錯誤。其中之一就是,多次宣告同乙個變數並不會報錯 for...

ts 常用宣告的資料型別

1.1 ts 如何宣告乙個boolean,number,string型別的值 在js中,定義 isflag 為true,但是後面還可以重新給它賦值為字串,而ts中就不行,同理,宣告number,string 也一樣 let bool boolean true 會報錯 不能將型別 str 分配給型別 ...