咱们知道 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!') }