文章目录
TS是JS的超集,所以JS基础的类型都包含在内
一、简介
TypeScript是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或Babel转译为JavaScript代码,可运行在任何浏览器,任何操作系统。
1.1. ts官网
https://www.tslang.cn/
1.2. ts安装
// 安装:
npm install -g typescript
// 查看版本
tsc -v
1.3. ts运行
tsc test.ts
// 监听当个文件 实时编译
tsc test.ts -w
// 监听全部ts文件
tsc -w
// 编译所有ts文件
tsc
注:编写ts文件,运行ts文件是先编译成js后在执行js,想直接执行ts,可安装ts-node。
1.4. ts-node
这个组件是为了让我们直接执行 ts,省去了我们手动转换 js,它内部可以直接转换 js,然后直接运行,使用命令安装:
npm install -g ts-node
运行
ts-node xxx.ts
二、基础类型
2.1. 字符串类型
字符串是使用string定义的
let a: string = '123';
//普通声明
//也可以使用es6的字符串模板
let str: string = `dddd${a}`;
其中 ` 用来定义 ES6 中的模板字符串,${expr} 用来在模板字符串中嵌入表达式。
2.1. 数字类型
支持十六进制、十进制、八进制和二进制;
let notANumber: number = NaN; //Nan
let num: number = 123; //普通数字
let infinityNumber: number = Infinity; //无穷大
let decimal: number = 6; //十进制
let hex: number = 0xf00d; //十六进制
let binary: number = 0b1010; //二进制
let octal: number = 0o744; //八进制
2.3. 布尔类型
注意,使用构造函数 Boolean 创造的对象不是布尔值:
let createdBoolean: boolean = new Boolean(1);
//这样会报错 应为事实上 new Boolean() 返回的是一个 Boolean 对象
事实上 new Boolean() 返回的是一个 Boolean 对象 需要改成
let createdBoolean: Boolean = new Boolean(1);
let booleand: boolean = true; //可以直接使用布尔值
let booleand2: boolean = Boolean(1); //也可以通过函数返回布尔值
2.4. 空值类型
JavaScript 没有空值(Void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函数
function voidFn(): void {
console.log('test void');
}
void 类型的用法,主要是用在我们不希望调用者关心函数返回值的情况下,比如通常的异步回调函数
如果你配置了tsconfig.json 是非严格模式 ,void也可以定义undefined 和 null类型,
// tsconfig.json
{
"compilerOptions":{
"strict": false
}
}
let u: void = undefined;
let n: void = null;
严格模式下,void不可以定义undefined 和 null类型,
// tsconfig.json
{
"compilerOptions":{
"strict": true
}
}
2.5. Null和undefined类型
let u: undefined = undefined; //定义undefined
let n: null = null; //定义null
2.6. void 和 undefined 和 null 最大的区别
与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 string 类型的变量:
- 这样写会报错 void类型不可以分给其他类型
//这样写会报错 void类型不可以分给其他类型
let test: void = undefined;
let num2: string = '1';
num2 = test;
- 这样是没问题的
//这样是没问题的
let test: null = null;
let num2: string = '1';
num2 = test;
//或者这样的
let test: undefined = undefined;
let num2: string = '1';
num2 = test;