布爾類型
布爾值是最基礎(chǔ)的數(shù)據(jù)類型,在 TypeScript 中,使用 boolean 定義布爾值類型:
const bool1: boolean = false
const bool2: boolean = 'fasle' //編譯器報(bào)錯犀变,不能將類型“"dsdsd"”分配給類型“boolean”。
const bool3: boolean = new Boolean(1) // 不能將類型“Boolean”分配給類型“boolean”。 “boolean”是基元沙峻,但“Boolean”是包裝器對象。如可能首選使用“boolean”两芳。
const bool4: boolean = Boolean(0)
console.log(bool4) // false
const bool5: boolean = Boolean(1)
console.log(bool5) // false
數(shù)值類型
使用 number 定義數(shù)值類型:
let num: number = 1212
num = 0b101110 // 二進(jìn)制
num = 0o172 // 八進(jìn)制
num = 0x7b // 十六進(jìn)制
字符串類型
使用 string 定義字符串類型:
let str1: string = 'jsbin'
let str2: string = `使用es6的字符串模板也可以${num}`
數(shù)組類型
定義數(shù)組有兩種寫法
let arr1: number[] = [1,2,3,4] // 寫法1
let arr2: Array<number> = [1,2] // 寫法2
let arr3: (string | number)[] = [1] // 聯(lián)合類型摔寨,既可以是數(shù)字類型,也可以有字符串類型
let arr4: Array<number | string> = [1, '2']
元組類型
長度固定怖辆,對應(yīng)數(shù)據(jù)的數(shù)據(jù)類型要一致
const tuple1: [string, boolean, number] = ['jsbin', true, 0]
const tuple2: [string, number] = ['jsbin', '12121'] // 不能將類型“string”分配給類型“number”是复。
const tuple3: [string, number] = ['jsbin', 121, 1212] // 不能將類型“[string, number, number]”分配給類型“[string, number]”。屬性“l(fā)ength”的類型不兼容疗隶。
枚舉類型
enum Rolse {
SUPER_ADMIN = 905,
ADMIN,
USER
}
// 編譯成js之后
var Rolse;
(function (Rolse) {
Rolse[Rolse["SUPER_ADMINS"] = 905] = "SUPER_ADMINS";
Rolse[Rolse["ADMINS"] = 906] = "ADMINS";
Rolse[Rolse["USERS"] = 907] = "USERS";
})(Rolse || (Rolse = {}));
console.log(Rolse.USER) // 907
any
// any類型(任何類型)
let any: any
any = 0
any = false
any = '1212'
空值void
avaScript 沒有空值(Void)的概念佑笋,在 TypeScript 中,可以用 void 表示沒有任何返回值的函數(shù):
function alertName(): void {
console.log(JsBin');
}
聲明一個 void 類型的變量沒有什么用斑鼻,因?yàn)槟阒荒軐⑺x值為 undefined 和 null:
const unusable: void = undefined;
null和undefined
在 TypeScript 中蒋纬,可以使用 null 和 undefined 來定義這兩個原始數(shù)據(jù)類型:
與 void 的區(qū)別是,undefined 和 null 是所有類型的子類型坚弱。也就是說 undefined 類型的變量蜀备,可以賦值給 number 類型的變量:
let u: undefined = undefined
let n: null = null
// 這樣不會報(bào)錯
let num: number = undefined;
// 這樣也不會報(bào)錯
let u: undefined;
let num: number = u;
// Type 'void' is not assignable to type 'number'.
let u: void;
let num: number = u;
never
// never (別得類型都不能)
const errorFn = (message: string) : never => {
throw new Error('dsd')
}
object
使用object定義對象類型
// object
let obj: object = {
name: 'jsbin'
}
類型斷言
類型斷言(Type Assertion)可以用來手動指定一個值的類型。兩種寫法1.<類型>值荒叶; 2.值 as 類型
// 類型斷言
function getLength(something: string | number): number {
if ((<string>something).length) {
return ((something as string).length);
} else {
return something.toString().length;
}
}