npm install typescript -g 全局安装ts
tsc 文件名 编译ts为js
tsc -w 可监听
tsc --init 初始化tsconfig配置文件
布尔值
最基本的数据类型true或false ,类型为boolean
let isDone: boolean=false
数字
ts中数字除了支持十进制和十六进制,还支持ES6中引入的二进制和八进制 ,类型为number
let a: number=5;
let b: number=0xf00d;
let c: number=0b1010;
let d: number=0o744;
字符串
我们使用双引号""和单引号''来表示文本数据类型,还可以使用模板字符串来表示,类型为string
let name: string='bob';
let sentence: string=`My name is ${name}`
数组
ts像js一样可以操作数组元素,有两组方式可以定义数组
- 在元素类型后面跟上
[]
let list: number[]=[1,2,3]
- 使用数组泛型
<>
let list: Array<number>=[1,2,3]
元组 Tuple
元组类型定义一组数据,数据里的元素的类型不必相同
let x:[string,number]=['abc',123]
let x:[string,number]=[123,'abc'] //error
x.push(456,'def')
x.push(false) //error
枚举
enum类型是对js的数据类型的补充
enum Color {Red,Green,Blue}
let c: Color=Color.Red //0
let d: Color=Color.Green //1
默认情况下,从0开始为元素的编号,也可以手动指定数值,下面的例子从2开始编号
enum Color {Red=2,Green,Blue}
let c: Color=Color.Green //3
也可以手动全部赋值
enum Color {Red=2,Green=1,Blue=5}
枚举类型便利的地方就是可以由枚举的值得到他的名字(优先得到最后面),例如我们知道数值为2,但是不确定他映射到Color的是哪个名字,则可以这样
/*
enum Color {Red=2,a,Green=1,d,b,Blue=5}
let c=Color[2] //d
*/
enum Color {Red=2,a,Green=1,Blue=5}
let c=Color[2] //Red
Any
any是变量的最顶端数据类型,代表任意数据类型,在我们不确定他是什么数据类型的时候可以去使用
//声明的any 修改为任意数据类型都不会报错
let a: any=1
a='a'
a=false
当你只知道一部分数据的类型时,any类型也是有用的。 比如,你有一个数组,它包含了不同的类型的数据
let list: any[]=[1,'a',false,null,undefined]
Void
她表示没有任何类型,当一个函数没有返回值的时候,你通常会看到其返回值为void
function test(): void {
console.log(123)
}
声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null
let unusable: void = undefined
Null 和 Undefined
TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。 和 void相似,它们的本身的类型用处不是很大
let u: undefined = undefined;
let n: null = null;
Never
never类表示的是那些永远不会存在的值,一般情况下用于抛出异常的函数体或者说死循环的值
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}
// 推断的返回值类型为never
function fail() {
return error("Something failed");
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) { }
}
Object
object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型
let a: Object={
a:1,
b:2
}
let b: Object=[1,2,'2',false];
let c: Object=():void=>{}
类型断言
类型断言就是我说啥就是啥,强制声明它为什么类型,有两种声明方式
- 泛型语法
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
as语法
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;然而,当你在TypeScript里使用JSX时,只有
as语法断言是被允许的