咱們知道 Javascript
數據類型分爲 原始數據類型
和 引用數據類型
。typescript
原始數據類型
包括字符串(String)、數字(Number)、布爾(Boolean)、對空(Null)、未定義(Undefined)、Symbol共6種類型。編程
引用數據類型
包括對象(Object)、數組(Array)、函數(Function)。數組
Typescript
的數據類型在 Javascript
的基礎上,增長了枚舉(Enum),元組(Tuple),Any,Void,Never等類型。函數
Typescript
的基礎數據類型示例代碼:spa
// 布爾值 let isValid: boolean = true; // 數字類型 let max: number = 2000; // 字符串 let msg: string = "Hello World"; // null let none: null = null; // undefined let unkown: undefined = undefined;
注意:code
String
生成的實例,本質上是對象,而不是字符串類型,Number
、Boolean
同理。let min :number = new Number(3); let str :string = new String('黃小米');
報錯以下,Number
,String
,Boolean
或 Object
這些類型指的是非原始的裝盒對象,既然生成對象 Object
,確定與前面的類型註解衝突,這就是緣由。對象
TypeScript
有兩種方式能夠定義數組。 blog
第一種,元素類型[]
,表示由此類型元素組成的一個數組:接口
let list: number[] = [1, 2, 3, 4];
第二種,使用數組泛型,Array<元素類型>
:ip
let list: Array<number> = [1, 2, 3, 4];
關於泛型,請參考後面的泛型一章。
object
表示非原始類型,也就是除 number
,string
,boolean
,symbol
,null
或 undefined
以外的類型。
let person: object = { name: "黃小米", age: 30 }; person.name = "楊過";
雖然 Typescript
提供了對象類型,可是對象內部的屬性,咱們沒法進行類型約束。person
這個對象裏面有 name
、age
兩個屬性,可是你卻沒法使用類型註解約束其類型。
同時,當咱們修改 name
爲 楊過
時,發現沒法編譯經過,報錯以下:
object
類型並不適合這種應用場景。使用 object
類型,通常表示像 Object.create
這樣的API。
咱們通常使用 接口(Interface)
來更詳細的描述對象這一數據類型,請參照接口這一章。
any
表示在編程階段未知類型的變量指定的一種類型。
var year: any = '2020-05-20'; year = 2020; year = new Date(2020); year.getFullYear();
any
類型的變量,編譯階段直接經過。any
類型容許被賦值爲任意類型,甚至能夠調用其屬性、方法。某種程度上來講,void
類型像是與 any
類型相反,它表示沒有任何類型。 當一個函數沒有返回值時,你一般會見到其返回值類型是 void
:
function test() :void { console.log('Hello World!') }