1.Node卸载

1)控制面板卸载

2)安装位置删除文件夹

3)c盘用户 下去删除.npmrc文件

2.下载Nodejs

最新下载地址: 下载 | Node.js 中文网

安装:

双击打开,下一步,同意协议,选择安装路径(建议不要放在C盘),一直下一步,到最后勾选就可以了

查询版本:

# node 版本
node -v
​
#npm 版本
npm -v

配置

设置淘宝镜像

npm config set registry " https://registry.npm.taobao.org 

3.安装TypeScript

npm install -g typescript

npm 包管理器

install 安装(简写i)

typescript ts依赖

-g 全局安装(电脑的任意位置都可以使用)

# 查询ts版本
​
tsc -v

编译tsc

tsc index.ts

自动编译

# 初始化package.json 文件
npm init -y
​
# 局部安装 ts-node-dev typescript 依赖
npm install ts-node-dev typescript# 在package.json 中的scripts中添加脚本"start": "ts-node-dev --respawn --transpile-only ./src"# 在终端中就可以使用npm start 启动项目
npm start

解析package.json文件

{"name": "ts", // 项目名称"version": "1.0.0", // 项目的版本"description": "", // 项目的描述"main": "index.js", // 项目的入口文件"scripts": { // 脚本"start": "ts-node-dev --respawn --transpile-only ./src"},"keywords": [], // 关键词"author": "", // 作者"license": "ISC", // 协议"dependencies": { // 依赖的版本"ts-node-dev": "^2.0.0","typescript": "^4.7.3"}
}

TypeScript 基础类型

1)number

let binaryLiteral:number = 0b1010; //二进制
let octalLiteral:number = 0o744; //八进制
let decLiteral:number = 6; //十进制
let hexLiteral:number =0xf00d;//十六进制
​
let a:number = 10;
​
//类型推断
let b = 100;
​
b =''  //报错,只能是number类型,不能赋其他类型的值

2)Boolean

let isDone:boolean = false;
​
isDone:true;
​
let flag = true;

3)String

let color: string = 'red';
color = 'yellow';
let fullName: string = 'Bod body';
​
let age:number =23;
let sentence:string = 'Hello,my name is $(fullName)';

​4)字面量

{//{}表示代码块//字面量限制取值范围let color :'red'|'green'|'blue';
​color = 'red';color = 'green';color = 'blue';
​let num:1|2|3;num = 2;
}

5)any

//any 任意类型
let a:any = 'hi';
a = true;
a = 123;

​6)unknown

// unknown 不知道
{let a:unknown = 'hi';a = false;a = 723;
​
}

7)array

{let arr: string[] =['a', 'b', 'c', 'd', 'e'];console.log(arr);​//Array<number> 泛型let arr2:Array<number> =[1,2,3,4,5];console.log(arr2);}

8)tuple 元组

// tuple 元组
{//限制每一个元素的类型,只能有2个元素let a: [string, number];a = ['hello',20];
}

9)enum 枚举

// enum 枚举:声明类型,限制范围
enum COLOR {RED = 'red',BLUE = 'blue',YELLOW = 'yellow',
}
let a :COLOR = COLOR.RED;
let b :COLOR = COLOR.BLUE;
let c :COLOR = COLOR.YELLOW;

​10)联合类型

{let a : string|number|string[]|number[] = [1,4];a = ['a', 'b', 'c', 'd', 'e'];a = 1,2,3,4,5,6,7,8;a = 'hello','hi';
}

11)类型断言

{//类型转换let a : unknown = 'hello world';// let length =a.length  //报错:unknown没有length,只要string有
​
​let length1 =(a as string).length   //给a转类型,用as装
​let length2 =(<string>a).length  //用泛型转变console.log(length1,length2);}
​

TypeScript 函数

1)函数的声明

{function x(){console.log('a');  }const b = () => console.log('b');
​
}

2)函数的返回值

{function foo ():number{return 10;}
​function bar ():string{return 'bar';}
​//void 没有返回值function y():void{}​console.log(foo(),bar());
}

3)函数的参数

{//普通参数function a (x:boolean,y:boolean):void{}
​//可选参数  ?代表可选   但可选不能放在第一个,必须放在必选参数之后  function b (x:number,y?:number){}
​//默认参数  function c (x:number,y:number = 1000){}
​//剩余参数function d (x:number,y:number ,...args:number[]){console.log(x,y,args);}
​a(true,false);
​b(100);b(7,23);
​c(100);c(100,100);
​d(10,20,1,2,3,4);
}

TypeScript 类(一)

TypeScript 是面向对象的 JavaScript

类描述了所创建的对象共同的属性和方法。

TypeScript 支持面向对象的所有特性,比如 类、接口等

定义类的关键字为 class,后面紧跟类名,类可以包含以下几个模块(类的数据成员):

1) 字段 − 类里面声明的变量。字段表示对象的有关数据。

2)构造函数 − 实例化时调用,可以为类的对象分配内存。

3)方法 − 对象要执行的操作。

4)创建实例化对象

class Person {//属性name: string;age: number;//?代表可选role?:string;//只读属性,不允许被修改readonly height: number;//构造函数(初始化属性)constructor(name: string, age: number, height: number,role?: string){this.name = name;this.age = age;this.role = role;this.height = height;}sayHello(){console.log(`${this.name}:hello`);  }
}const p = new Person('admin',18,172);p.height = 186; // 报错:因为 readonly(只读) height不能修改
console.log(p);

TypeScript 类(二)

1.static 关键字:

static 关键字用于定义类的数据成员(属性和方法)为静态的,静态成员可以直接通过类名调用

{class Person{static nickName: string;static sayHi(){console.log(Person.nickName,'hi');}}//静态属性的静态方法通过类名访问Person.nickName = 'John';Person.sayHi()
}

2.instanceof 运算符:

instanceof 运算符用于判断对象是否是指定的类型,如果是返回 true,否则返回 false

  1. 访问控制修饰符

  1. TypeScript 中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。TypeScript 支持 3 种不同的访问权限 :

1)public(默认) : 公有,可以在任何地方被访问。(写或不写都是public)

2)protected : 受保护,可以被其自身以及其子类和父类访问。

3) private : 私有,只能被其定义所在的类访问

{class Person{//在本类和子类中访问protected name: string;//在本类中访问private age: number;constructor(name: string, age: number){this.name = name;this.age = age;}sayHello(){console.log("this.name,this.age");}}const p = new Person('admin',18);}

TypeScript 类的继承

一. 1)TypeScript 支持继承类,即我们可以在创建类的时候继承一个已存在的类,这个已存在的类称为父类,继承它的类称为子类。

2) 类继承使用关键字 extends,子类除了不能继承父类的私有成员(方法和属性)和构造函数,其他的都可以继承。

3)TypeScript 一次只能继承一个类,不支持继承多个类,但 TypeScript 支持多重继承(A 继承 B,B 继承 C)。

二.继承类的方法重写

类继承后,子类可以对父类的方法重新定义,这个过程称之为方法的重写。

其中 super 关键字是对父类的直接引用,该关键字可以引用父类的属性和方法。

{//Animalclass Animal{name: string;age: number;constructor(name: string, age: number){this.name = name;this.age = age;}}class Dog extends Animal{back(){console.log(`${this.name}:汪汪汪汪`);}}const dog = new Dog('哈士奇',4);dog.back();
}

TypeScript抽象类

1)什么时抽象类?

被abstract修饰的类,就是抽象类,抽象类又叫基类

2)为什么要有抽象类?

为了规定类中的一些属性和方法,在被继承的时候必须重写,所以被abstract修饰的方法和属性,在继承时必须重 写,分别叫做抽象类和抽象方法

3)抽象类的特点:

抽象类自身无法实例化,必须由子类(派生类)进行实例化

抽象类也可以拥有自己的抽象方法和属性

抽象类中的抽象方法和抽象属性必须被重写

{//被abstract修饰的类叫做抽象类//抽象类不能实例化(创建对象),只能作为基类(父类),派生类(子类)//只能被继承,继承的时候需要重写父类中的抽象属性和抽象方法//被abstract修饰的属性叫做抽象属性,不能直接赋值//被abstract修饰的方法叫做抽象方法,不能有方法体//抽象属性和属性方法不能有具体的实现//抽象类用来定义类的结果(属性,方法)abstract class Person {abstract name: string;abstract sayHi();}//继承抽象类class Student extends Person {name: string;constructor(name: string){super();this.name = name;}sayHi() {console.log('${this.name}:hi');}}const stu = new Student('chen');
}

TypeScript接口

一.1)接口定义使用interface关键字

2)接口的作用类似于抽象类,不同点在于接口中的所有方法和属性都是没有实值的,换句话说接口中的所有方法都是抽象方法。接口主要负 责定义一个类的结构,接口可以去限制一个对象的接口,对象只有包含接口中定义的所有属性和方法时才能匹配接口。同时,可以让一个 类去实现接口,实现接口时类中要保护接口中的所有属性

3)需要注意接口不能转换为 JavaScript。 它只是 TypeScript 的一部分。

{interface IPerson{// name: string = "", //报错:接口函数不能具有初始化表达式name: string;sayHi();}interface IA{age: number;}//实现接口class Student implements IPerson,IA{name: string;age: number;constructor(name: string,age: number) {this.name = name;this.age = age;}sayHi(){console.log(`${this.name}:hi`);}}const stu = new Student('chen',24);stu.sayHi();
}

二.实现接口

1)接口的实现使用implements关键字

2)同一个类可以实现多个接口

3)抽象类也可以实现接口

4)接口不能实现接口,但可以使用extends扩展

{interface IA{name: string;}//扩展interface IB extends IA{age: number;}class C implements IB{//重写name: string;age: number;}
}

泛型

1)在定义函数和类时,遇到类型不明确的时候就可以使用泛型

2)泛型可以指定多个

import { LanguageServiceMode } from "typescript";{function test<T>(arg:T):T{return arg;}//外部指定类型test<string>('chen');test<number>(10);//多个泛型使用用逗号,隔开function test2<T,K>(a:T, b:K):K{return b;}//类的泛型class MyClass<T>{data:T;constructor(data:T){this.data = data;}}interface MyInter{length: number;
}const obj:MyInter ={length:10};//T extends MyInter  可以是MyInter,也可以是实现了MyInter接口的子类
function foo<T extends MyInter>(a:T):T{
return a;
}
foo<MyInter>(obj);const mc = new MyClass<number>(10);}

TypeScript (TS相关推荐

  1. 学习TypeScript(TS),这一篇就足够了

    一.TypeScript 简介 1.什么是 TypeScript? 官方文档 TypeScript 本质上是向 JavaScript 语言添加了「可选的静态类型」和「基于类的面向对象」编程,它相当于是 ...

  2. 前端之TypeScript(TS)

    从TypeScript开始 认识TS TS特点 TS安装 第一个TS程序 老师小结 认识TS TS,全称TypeScript, 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6+ ...

  3. typescript ts 错误列表

    code 类型 英文描述 中文描述 1002 错误 Unterminated string literal. 未终止的字符串文本. 1003 错误 Identifier expected. 应为标识符 ...

  4. typescript TS 错误码大全

    code    类型    英文描述    中文描述 1002    错误    Unterminated string literal.    未终止的字符串文本. 1003    错误    Id ...

  5. 基于Cocos Creator 2.3.0,使用TypeScript(ts)实现微信跳一跳

    在看我这篇文章之前,首先您应该掌握一些基本知识,一是了解和使用cocos creator的常用控件,如Button,Label,Sprite等,脚本事件绑定等;Vscode的基本操作;TypeScri ...

  6. TypeScript(ts)笔记总结01

    一.基础类型 // 基础类型 (() => {// 布尔类型-----boolean// let 变量名:数据类型 = 值let flag: boolean = true;console.log ...

  7. typescript ts参数展开运算符:形参展开和实参展开及as const的用法示例

    形参展开 实参展开 as const固定为常量

  8. 【TypeScript】TS全解

    文章目录 一.TypeScript 介绍 (一)TypeScript (二)优势 二.TypeScript 使用准备 (一)安装编译 TS 的工具包 (二)编译并运行 TS 代码 (三)简化运行 TS ...

  9. 小邵教你玩转Typescript、ts版React全家桶脚手架

    前言:大家好,我叫邵威儒,大家都喜欢喊我小邵,学的金融专业却凭借兴趣爱好入了程序猿的坑,从大学买的第一本vb和自学vb,我就与编程结下不解之缘,随后自学易语言写游戏辅助.交易软件,至今进入了前端领域, ...

最新文章

  1. AWK 学习手札之一: an AWK tutorial
  2. matlab sort三维_matlab练习题
  3. Windows 10 Visual Studio 2015 配置 Caffe
  4. 拿着5家offer的Java,对面试官做了什么?
  5. 避免switch嵌套的一种方法
  6. 接口规范 8. 播出认证相关接口
  7. [转载] python跨行 print:多用(),换行符\要小心,少用+或者不用(其它程序代码跨行用\就行,不能用括号)
  8. mac电脑利用file和iconv命令修改文件编码
  9. GB28181的NAT穿透
  10. IDM下载浮动条使用详解
  11. 第五章 神经网络和误差逆传播法算法(BP)的推导
  12. 【JS】每日一题:模块化
  13. matlab绘制不同角度的抛体运动
  14. 用Python爬取B站弹幕并做成词云
  15. 如何整合润乾报表到spring boot项目
  16. 归纳偏置/归纳偏差/inductive bias
  17. tensorflow--猫狗识别
  18. iOS 诡异的崩溃EXC_BREAKPOINT (code=1, subcode=0x1c5691d2c)
  19. python获取股票的市盈率_怎样查找股票的历史市盈率数据?
  20. CalibNet:Geometrically Supervised Extrinsic Calibration using 3D Spatial Transformer Networks阅读理解

热门文章

  1. Python:斐波那契数列前n项,前n项和
  2. incaformat蠕虫病毒样本分析及查杀防范措施
  3. 第五章 代码的可复用性——复用性的结构
  4. Matlab画柱状、饼状填充图(亲测可用)
  5. matlab纹理柱状图程序
  6. idea打开多个文件多排显示
  7. storm mysql trident_Storm Trident状态
  8. ACM在线评测系统 各大高校的ACM在线测评系统
  9. 苹果手机无法更新系统问题
  10. CPU密集型 vs IO密集型