基础类型

359 阅读3分钟

npm install typescript -g 全局安装ts

tsc 文件名 编译ts为js

tsc -w 可监听

tsc --init 初始化tsconfig配置文件

布尔值

最基本的数据类型truefalse ,类型为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类型的变量没有什么大用,因为你只能为它赋予undefinednull

let unusable: void = undefined
Null 和 Undefined

TypeScript里,undefinednull两者各自有自己的类型分别叫做undefinednull。 和 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表示非原始类型,也就是除numberstringbooleansymbolnullundefined之外的类型

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语法断言是被允许的