首页 > 其他分享 >第一章:TypeScript快速入门

第一章:TypeScript快速入门

时间:2022-09-22 08:57:26浏览次数:81  
标签:TypeScript 入门 number 第一章 报错 类型 let string 变量

一、TypeScript 开发环境搭建

1、TypeScript有什么用

  • 编译时的强类型

  • 模块化

  • 已有的类库可以很方便的使用

2、下载Node.js

  •    版本号 LTS:稳定版(一般开发下载这个)

  •    版本号 Current:最新版

3、安装Node.js

     

  • 找到下载的目录里面,打开Node.js进行无脑安装,直接下一步

  • 怎么知道安装成功?
  • 第一种方法:win + R 打开运行对话框,输入cmd 打开命令提示符窗口,输入node -v 回车 显示安装版本号,如以下结果即为成功!

       

  • 第二种方法:win 搜索powerShell,打开PowerShell 也是一样的输入node -v 回车 显示版本号,即为成功!

  

  

4、使用npm(node包管理器,通过这个可以安装node下面的各种应用与软件,下载完node.js就可以直接使用npm了)全局安装TypeScript

  • 进入命令行

  • 输入:npm i -g typescript

      

  •  显示以上信息,反正没有报错就表示typescript就已经安装好了
  • 怎么查看它有没有安装好呢?输入tsc 命令回车,如果出现一堆东西那就表示安装成功了,否则就显示没有找到这条命令。  

5、创建一个ts文件

  • 在任意一个文件夹里面新建一个后缀名为.ts的文件,用记事本或随意一个文本编辑器打开文件,输入console.log(' hello TS!');
  • 但是网页不认识ts文件怎么办?利用我们刚刚下载好的typescript编译器,把ts文件转化为js文件
  • 怎么转?使用tsc命令对ts文件进行编译

6、使用tsc对ts文件进行编译

  • 在所在文件夹里面输入cmd,在这里输入cmd的好处就是 命令行所在的路径正好就是当前所在文件的路径,就不用使用命令进入了! 
  • 输入命令:tsc 需要编译的文件名,回车执行,虽然命令提示符窗口没有发生什么变化,但是此时此刻你会发现该文件夹里面多了一个js文件!

      

 二、TypeScript 基本类型

1、类型声明

  • 类型声明是TS非常重要的一个特点

  • 通过类型声明可以指定TS中变量(参数,形参)的类型

  • 指定类型后,当为变量赋值时,TS编译器会自动检查是否符合声明,符合则赋值,否则会报错

  • 简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值

  • 语法:❶ let 变量:类型;❷ let 变量:类型 = 值;❸ function fn(参数1:类型;参数2:类型):类型{  ...  }

  • 自动类型判断:

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

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

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

  • 栗子如下:
// -------------------------- 1、number类型 ----------------------------------


// 在ts的写法
// 意思是:声明了一个变量a,同时指定它的类型为number
let a: number;

// a 的类型数组为了number,在以后的使用过程中a的值只能是数字
a = 10;
a =33;
// 此行会报错了,因为上面变量a指定的是数字类型,所以这里不能是其他类型的
// a = "hello";
// 虽然这行会报错,但是进行编译还是会成功的


// -------------------------- 2、string类型 ----------------------------------

// let 会编译成 var , 默认编译成js3版本
let b: string;
b = 'hello';

// -------------------------- 3、声明变量直接赋值 ----------------------------------

// 声明完变量直接进行赋值(ts的写法)
let c: boolean = true;
c = false;

// -------------------------- 4、boolean类型 ----------------------------------

// 如果没有指定boolean类型,但是赋值是布尔类型的(即声明和赋值是同时进行的),ts可以自动对变量进行变量检测
let d = false;
// d = 123 // 会报错
d = true;

// -------------------------- 5、js函数类型 ----------------------------------

// js中的函数是不考虑参数类型和个数的
function sum(a,b){
    return a + b;
}

// console.log(sum(123, 456)); // 579
console.log(sum(123, '456')); // '123456'

// -------------------------- 6、ts函数类型 ----------------------------------

// 但是可以给参数指定类型声明
function sum2(a:number,b:number){
    return a + b;
}

// sum2(123,"456"); // 会报错,因为ts是一门比较严格的语言

// -------------------------- 7、给函数指定类型声明 ----------------------------------

// 给函数指定类型声明,就表示返回值的类型
function sum3(a:number,b:number):number{
    return a + b;
}
let result = sum3(123,456);
// let result2 = sum3("123",456);//报错

2、TS中类型(一)

  • 类型

  •  实例1:
//------------------------ 1、字面量 ------------------------------------

// 直接使用字面量进行类型声明
// 但是已经赋值过的不能再进行修改,否则会报错,像常量一样,限制了它的值
let a: 18;
a = 18;
// a = 10; // 报错

//------------------------ 2、联合类型 ------------------------------------

// |:表示“ 或 ”的意思,这两个值,随便一个都可以
// 可以使用 | 来连接多个类型(也叫联合类型)
let b: "male" | "false";
b = "male";
b = "false";
// b = "hello"; // 报错

// 栗子:
let c: boolean | string;
c = "hello";
c = false;

//------------------------ 3、any类型 ------------------------------------

// any 表示任意类型,一个变量设置类型为any后相当于对该变量关闭了TS的类型检测(所以这个不推荐使用)
// 在使用TS时,不建议使用any类型
let d: any; // 显式类型(直接声明类型)

// let d; 声明变量时,如果不指定类型,则TS解析器会自动判断变量的类型为any(隐式类型)
d = 10;
d = "hello";
d = true;

//------------------------ 4、unknown类型 ------------------------------------

// unknown:表示未知类型的值,当自己不知道用什么类型的时候,就使用这个类型
let e: unknown;
e = 10;
e = "hello";
e = true;

// 把变量d的值,赋给s,d的类型是any,它可以赋值给任意变量,不会报错
let s: string;
s = d;
// 但是any类型会关闭TS的类型检测,赋值给s变量的话就会把s变量的类型检测也关闭掉,但是unknown就不会,这就是使用unknown的好处

// 用unknown类型的值就不能赋值给string类型,会报错,这就是any与unknown之间的区别
s = e;

// unknown实际上就是一个类型安全的any,unknown类型的变量不能直接赋值给其他变量
// 除非:
// 方法一:先给他进行一个类型检测判断
if (typeof  e === "string"){
    s = e;
}
//方法二:进行类型断言(就是一个判断语言)可以用来告诉解析器变量的实际类型
/**
 * 类型断言语法:
 *      变量 as 类型
 *      <类型>变量
 */
s = e as string; // 写法一
s = <string>e; // 写法二

//------------------------ 5、void类型 ------------------------------------

// 不写返回值的,函数默认为void类型,写了返回值的按返回值的类型为函数的类型
function fn(){
}

// 按照返回值情况,函数类型为:function fn2(num: any): true | 123
function fn2(num){
    if (num>0){
        return true;
    }else {
        return 123;
    }
}

// void 用来表示空值,以函数为例,就表示没有返回值的函数
function fn3(): void{
    // return xxx; // 只要有返回值就会报错
    // return null 或 undefined; // 就不会报错
}

//------------------------ 6、never类型 ------------------------------------

// never 表示永远不会返回结果,没有值
// 与void不同的地方是:连null和undefined都不返回
// 利用never来完成报错功能,因为它永远不会返回结果!
function fn4(): never{
    throw new Error("报错啦!");
}
  • 实例2

//------------------------ 1、object类型 ------------------------------------

// object表示一个js对象
let a: object;
// 以下的两种也是一个对象
a = {};
a = function (){};

// {}:用来指定对象中可以包含哪些属性
// let b: {};
// 语法: {属性名1:属性值1,属性名2:属性值3, ...}

// 这个与变量a的区别是:这里可以添加一些属性和方法
// 在属性名后面加上?:表示这个属性是可选的,有也可以,没有也不会报错
let b: {name: string,age?: number};
// b = {}; // 这里会报错,因为找不到上面的那个name属性
b = {name: "大美女"};
b = {name: "大美女",age:18};

// [自定义变量名称:属性名类型为字符串]: 任意类型 : 这里表示任意类型的属性
// 要求这个属性必须有一个name属性,其他的任意都可以,有没有都可以
let c:{name: string,[propName: string]: any};
c = {name: "陶陶",age: 18,sex: "女"};

/***
 * 定义函数结构:
 *   利用箭头函数,设置函数结构的类型声明
 *      语法:(形参1:类型,形参2:类型,...)=> 返回值
 *   这样写函数d的时候,定义形参时就会自动给形参生成类型声明
 */
let d: (a: number,b: number)=>number;
d = function (n1,n2): number{
    return n1 + n2;
}

//------------------------ 2、array类型 ------------------------------------

/***
 * 数组的类型声明方法:
 *      方法一:类型[]
 *      方法二:Array<类型>
 */

// string[]:表示字符串数组,字符串数组里只能存放字符串类型的数据,不能存放其他类型的数据
let e: string[];
e = ["a","b","c"];

// number[]:表示数值数组
let f: number[];

// Array<number>:这个也是表示数值类型的数组
let g: Array<number>;
g = [1,2,3];

//------------------------ 3、tuple(元祖)类型 ------------------------------------

/***
 * 元祖:就是固定长度的数组,当自己数组的数据是固定的时候就可以用
 *      语法:[类型1,类型2,类型3,...]
 */
let h: [string,number];
h = ["hello",123];

//------------------------ 4、enum(枚举)类型 ------------------------------------

/***
 * enum:枚举,一般 结果是在多个值之间进行选择的时候就可以用枚举了
 * 一般性别都是男或女的
 */
// 表示在这里定义了一个枚举,里面写我们需要用到的值
enum Gender{
    Male,// 表示男
    Female// 表示女
}
let i: {name: string,gender: Gender};// 这里就可以直接用Gender作为类型存进去
i = {
    name: "大美女",
    gender: Gender.Female
}

// console.log(i.gender === Gender.Female);//true


//------------------------ 5、 &(且) ------------------------------------

// &:表示同时、且、与的意思
// 变量j必须同时满足name是字符串类型,age是数值类型两个条件
// 连接两个对象
let j: { name: string } & { age: number };
j = {name: "大美女",age: 18};

// 类型的别名:简化类名的使用
type myType = string; // 创建了一个类型别名
let k: 1 | 2 | 3 | 4 | 5;
let l: 1 | 2 | 3 | 4 | 5;
let m: myType; // 但是这样没有意义

// 但是我们可以给一些长的数据加别名
type myType2 = 1 | 2 | 3 | 4 | 5;
let k2: myType2;
let l2: myType2;

 3、

标签:TypeScript,入门,number,第一章,报错,类型,let,string,变量
From: https://www.cnblogs.com/fairya/p/16717868.html

相关文章

  • Java开发学习(三十五)----SpringBoot快速入门及起步依赖解析
    一、SpringBoot简介SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。使用了Spring框架后已经简化了我们的开发......
  • MyBatis 快速入门
    MyBatis快速入门    查询tb_user的所有信息  1、创建tb_user表,添加数据createdatabasemybatis;usemybatis;droptableifexiststb_user;createtabl......
  • Typescript类型体操 - Mutable
    题目中文实现一个通用的类型Mutable<T>,使类型T的全部属性可变(非只读)。例如:interfaceTodo{readonlytitle:string;readonlydescription:string;......
  • Spring入门程序
    ​ 三.入门程序1.创建maven项目先新建一个空工程  ​编辑​编辑   在工程中创建一个module:     ​编辑​编辑​编辑​编辑​编辑 2.......
  • TypeScript 函数重载
    函数参数的类型可以使用联合类型?,让我们传递的值可以有多种类型的情况。下面是写的一个简单函数,参数x可以有number、string两种类型,返回值也是。functionreverse(x:......
  • Springboot 入门 | Springboot
    1.作用便捷搭建基于Spring的工程脚手架,尽可能减少一切xml的配置2.使用步骤1.创建工程2.添加启动器依赖3.创建启动类4.创建处理器Controller5.测试创建Maven工......
  • 程序员修炼之道第一章读后感
    最近阅读了《程序员修炼之道——从小工到专家》这本书,感触颇深,于是便写下自己的感想与诸位分享。该书的第一章讲的是注重时效的哲学。注重时效的程序员不仅有方法,更有责......
  • Java零基础入门学习Day[6]
    JAVAthis关键字java中this关键字的用法:1、当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量;2、在构造函数中,通过this可以调用同一类中别......
  • 第一章-系统概述
    1.1操作系统基本概述1.1.1OS的概念和功能操作系统是【控制和管理整个计算机系统的硬件和软件资源,合理组织,调度计算机工作与资源的分配】是一个程序集合,是最基本的系统软......
  • (一)JPA的快速入门
    JPA简介JPA是什么JPA是JavaPersistenceAPI的缩写,是一套由Java官方制定的ORM标准。当制定这套标准以后,市场上就出现很多JPA框架。如:OpenJPA(apache),EclipseTop(linktop)(e......