一、型別宣告
型別宣告是 ts 非常重要的乙個特點,通過型別宣告可以指定 ts 中變數(引數、形參)的型別
當為變數賦值時,ts編譯器會自動檢查值是否符合型別宣告,符合則賦值,否則報錯
簡而言之,型別宣告給變數設定了型別,使得變數只能出儲存某種型別的值,這是 js 不具備的
語法:
let a: number;a = 7;
a = 'luck';//
此行**會報錯
let a = true;a = false;
function二、變數型別 1、字面量sum(a: number, b: number): number
let a1: 10;2、any —— 任意型別乙個變數設定型別為any後相當於對該變數關閉了ts的型別檢測a1 = 10;
//後面使用時不可修改,類似常量
//可以使用 | 來連線多個型別(聯合型別),表示『或』
let b1: "male" | "female";
b1= "male";
b1= "female";
let c1 :
boolean |string;
c1 = true
;c1 = 'hello';
//3、unknown —— 未知型別實際上就是乙個型別安全的anylet d:any;(顯示的any)
//宣告變數如果不指定型別,則ts解析器會自動判斷變數的型別為any(隱式的any)
let d;
d = 10;
d = 'hello';
d = 'true';
let e: unknown;any型別的變數可以賦值給任意變數;但unknown 型別的變數不能直接賦值給其他變數e = 10;
e = true
;e = "hello";
let s:string;型別斷言 ——可以用來告訴解析器變數的實際型別//d的型別是any,它可以賦值給任意變數
let d;
s =d;
let e: unknown;
e = 'hello';
s = e;//
會報錯,e的型別是unknown,不能直接賦值給其他變數
if (typeof e === "string")
/*4、void —— 表示空值以函式為例,就表示沒有返回值(或返回undefined)的函式語法: 變數 as 型別
《型別》變數
*/s =e as string;
s = e;
function fn2(): void5、never表示永遠不會返回結果;沒有值(比較少用,一般是用來丟擲錯誤)
function6、object用來指定物件中可以包含哪些屬性fn3(): never
/*語法: 在屬性名後面加上?,表示屬性是可選的
*/let b: ;
b = {}; //
沒有的話就會報錯
b = ;
let c1: ;
c1 = //
會報錯,多餘了c
//7、array[propname: string]: any 表示可以多餘任意型別的屬性
let c:
c =
/*8、tuple(ts新增型別)陣列的型別宣告:
型別array《型別》
*///
string 表示字串陣列
let e1:string;
e1 = ['a','b','c'];
//number 表示數值陣列
let f: number;
let g: array
;g = [1, 2, 3];
就是固定長度的陣列
/*9、enum(ts新增型別)列舉可以把所有可能的值都列舉出來語法:[型別, 型別, 型別]
*/let h: [string, number];
h = ['hello', 123];
enum genderlet 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 分配給型別 ...