关于TypeScript(1)

142 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情。以下是我在学习TypeScript入门,根据教程和文档总结的关于ts笔记。方便新人更清晰的进入ts的大门。

TypeScript是什么?

以JavaScript为基础构建的语言,是Jascript的超集,拓展了JavaScript,并添加了类型,可以在任何支持JavaScript的平台中执行,ts不能被js解析器直接执行,需要编译。

TypeScript增加了什么?

  • 类型
  • 支持ES的新特性
  • 强大的开发工具
  • 添加ES不具备的新特性
  • 丰富的配置选项

TypeScript开发环境搭建

  1. 下载node.js 并安装
  2. 使用npm全局安装TypeScript (npm i -g typescript)
  3. 创建一个ts文件
  4. 使用tsc对ts文件进行编译
    进入命令行--->进入ts文件所在目录--->执行命令:tsc xxx.ts

基本类型

类型声明
类型声明是ts非常重要的一个特点
通过类型声明可以指定ts中变量(参数、形参)的类型
指定类型后,当为变量赋值时,ts编译器会自动检查值是否符合类型声明,符合则赋值,否则报错
简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值
语法:
let 变量:类型;
let 变量:类型 = 值;
function fn(参数:类型,参数:类型):类型{ }
类型

类型描述
number任意数字
string任意字符串
boolean布尔值true或false
字面量限制变量的值就是该字面量的值
any任意类型
unknown类型安全的any
void没有值(或undefined)
never不能是任何值
object任意的js对象
array任意js数组
truple元素,ts新增类型,固定长度数组
enum枚举,ts中新增类型

注意:

  • 关于any和unknown any表示的是任意类型,一个变量设置类型为any后相当于对该变量关闭了ts的类型检测,不建议使用
    声明变量如果不指定类型,则ts解析器会自动判断变量的类型为any(隐式的any)
    any类型的变量,可以赋值给任意变量。unknown实际上就是一个类型安全的any,unknown类型的变量,不能直接赋值给其他变量\
  • 关于void和never void用来表示空,以函数为例,就表示没有返回值的函数
    never表示永远不会返回结果
function fn2():never{
   throw new Error('报错了')
}
  • 关于object object表示一个js对象,语法:{属性名:属性值,属性名?:属性值},在属性名后边加上?,表示属性是可选的,[propName:string]:any 表示任意类型的属性
    设置函数结构的类型声明:
    语法:(形参:类型,形参:类型……)=>返回值
    string[]表示字符串数组
    number[]表示数值数组
  • 关于使用| 可以使用|来连接多个类型(联合类型)
let b:"male"|"female";
b = "male";
b = "female";

let c:boolean|string;
c = true;
c = "hello";
  • 关于数组的类型声明 语法:
    类型[]
    Array<类型>
    string[]表示字符串数组
    number[]表示数值数值
let a: srting[];
a = ['1','2'];

let b: number[];
let c: Array<number>;
c = [1,2,3];
  • 关于元组:元组就是固定长度的数组 语法:[类型,类型,类型]
let h: [srting,number];
h = ['hello',123];
  • 关于enum枚举
enum Gender{
 Male = 0,
 Female = 1
 }
let i:{name: string,gender:Gender}
i = {
  name:'aa',
  gender:Gender.Male
}
  • &表示同时
let i: {name: string}&{age: number};
i = {name:'aa',age:18};
  • 类型的别名
type myType = 1|2|3|4|5;
let k: myType;
  • 类型断言,可以用来告诉解析器变量的实际类型 语法:
    变量 as类型
    <类型>变量

自动类型判断

  • TS拥有自动的类型判断机制

  • 当对变量的声明和赋值时同时进行的,ts编译器会自动判断变量的类型

  • 所以如果你的变量的声明和赋值同时进行的,可以省略掉类型声明