基本類型
- 布爾類型(boolean)
- 數(shù)字類型(number)
- 字符串類型(string)
- 數(shù)組類型(array)
- 元組類型(tuple)
- 枚舉類型(enum)
- 任意值類型(any)
- null 和 undefined
- void 類型
- never 類型
布爾類型
最基本的數(shù)據(jù)類型就是簡(jiǎn)單的true/false值,在JavaScript和TypeScript里叫做boolean(其它語(yǔ)言中也一樣)若专。
let flag:boolean=false
flag=1 //報(bào)錯(cuò)
不能將類型“1”分配給類型“boolean”许蓖。ts(2322)
數(shù)字型
和JavaScript一樣,TypeScript里的所有數(shù)字都是浮點(diǎn)數(shù)富岳。 這些浮點(diǎn)數(shù)的類型是 number蛔糯。
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;
字符串string
和JavaScript一樣,可以使用雙引號(hào)( ")或單引號(hào)(')表示字符串
let s_name: string = "bob";
s_name = "smith";
s_name=122 //報(bào)錯(cuò)let s_name: string,不能將類型“122”分配給類型“string”窖式。ts(2322)
模版字符串蚁飒,它可以定義多行文本和內(nèi)嵌表達(dá)式。 這種字符串是被反引號(hào)包圍( `)萝喘,并且以${ expr }這種形式嵌入表達(dá)式
let name: string = `Gene`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ name }.
I'll be ${ age + 1 } years old next month.`;
數(shù)組
TypeScript像JavaScript一樣可以操作數(shù)組元素淮逻。 有兩種方式可以定義數(shù)組。
第一種阁簸,可以在元素類型后面接上 []爬早,表示由此類型元素組成的一個(gè)數(shù)組:
let list: number[] = [1, 2, 3];
第二種方式是使用數(shù)組泛型,Array<元素類型>:
let list: Array<number> = [1, 2, 3];
元組 Tuple
表示一個(gè)已知元素?cái)?shù)量和類型的數(shù)組启妹,各元素的類型不必相同筛严。 比如,你可以定義一對(duì)值分別為 string和number類型的元組饶米。
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ['hello', 10]; // OK
// Initialize it incorrectly
x = [10, 'hello']; // Error
枚舉類型
enum類型是對(duì)JavaScript標(biāo)準(zhǔn)數(shù)據(jù)類型的一個(gè)補(bǔ)充桨啃。
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
任意值類型 any
不希望類型檢查器對(duì)這些值進(jìn)行檢查而是直接讓它們通過(guò)編譯階段的檢查。 那么我們可以使用 any類型來(lái)標(biāo)記這些變量:
Void
某種程度上來(lái)說(shuō)檬输,void類型像是與any類型相反照瘾,它表示沒(méi)有任何類型。 當(dāng)一個(gè)函數(shù)沒(méi)有返回值時(shí)丧慈,你通常會(huì)見(jiàn)到其返回值類型是 void:
function warnUser(): void {
console.log("This is my warning message");
}
Null 和 Undefined
undefined和null兩者各自有自己的類型分別叫做undefined和null析命。 和 void相似,它們的本身的類型用處不是很大:
// Not much else we can assign to these variables!
let u: undefined = undefined;
let n: null = null;
Never
never類型表示的是那些永不存在的值的類型。 例如鹃愤, never類型是那些總是會(huì)拋出異炒亟粒或根本就不會(huì)有返回值的函數(shù)表達(dá)式或箭頭函數(shù)表達(dá)式的返回值類型; 變量也可能是 never類型昼浦,當(dāng)它們被永不為真的類型保護(hù)所約束時(shí)馍资。
Object
object表示非原始類型,也就是除number关噪,string,boolean乌妙,symbol使兔,null或undefined之外的類型。
let people:object={
name:'e1'
}
類型斷言
通常這會(huì)發(fā)生在你清楚地知道一個(gè)實(shí)體具有比它現(xiàn)有類型更確切的類型藤韵。
類型斷言有兩種形式虐沥。 其一是“尖括號(hào)”語(yǔ)法:
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
另一個(gè)為as語(yǔ)法:
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;