TypeScript (TS
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
访问控制修饰符
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相关推荐
- 学习TypeScript(TS),这一篇就足够了
一.TypeScript 简介 1.什么是 TypeScript? 官方文档 TypeScript 本质上是向 JavaScript 语言添加了「可选的静态类型」和「基于类的面向对象」编程,它相当于是 ...
- 前端之TypeScript(TS)
从TypeScript开始 认识TS TS特点 TS安装 第一个TS程序 老师小结 认识TS TS,全称TypeScript, 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6+ ...
- typescript ts 错误列表
code 类型 英文描述 中文描述 1002 错误 Unterminated string literal. 未终止的字符串文本. 1003 错误 Identifier expected. 应为标识符 ...
- typescript TS 错误码大全
code 类型 英文描述 中文描述 1002 错误 Unterminated string literal. 未终止的字符串文本. 1003 错误 Id ...
- 基于Cocos Creator 2.3.0,使用TypeScript(ts)实现微信跳一跳
在看我这篇文章之前,首先您应该掌握一些基本知识,一是了解和使用cocos creator的常用控件,如Button,Label,Sprite等,脚本事件绑定等;Vscode的基本操作;TypeScri ...
- TypeScript(ts)笔记总结01
一.基础类型 // 基础类型 (() => {// 布尔类型-----boolean// let 变量名:数据类型 = 值let flag: boolean = true;console.log ...
- typescript ts参数展开运算符:形参展开和实参展开及as const的用法示例
形参展开 实参展开 as const固定为常量
- 【TypeScript】TS全解
文章目录 一.TypeScript 介绍 (一)TypeScript (二)优势 二.TypeScript 使用准备 (一)安装编译 TS 的工具包 (二)编译并运行 TS 代码 (三)简化运行 TS ...
- 小邵教你玩转Typescript、ts版React全家桶脚手架
前言:大家好,我叫邵威儒,大家都喜欢喊我小邵,学的金融专业却凭借兴趣爱好入了程序猿的坑,从大学买的第一本vb和自学vb,我就与编程结下不解之缘,随后自学易语言写游戏辅助.交易软件,至今进入了前端领域, ...
最新文章
- AWK 学习手札之一: an AWK tutorial
- matlab sort三维_matlab练习题
- Windows 10 Visual Studio 2015 配置 Caffe
- 拿着5家offer的Java,对面试官做了什么?
- 避免switch嵌套的一种方法
- 接口规范 8. 播出认证相关接口
- [转载] python跨行 print:多用(),换行符\要小心,少用+或者不用(其它程序代码跨行用\就行,不能用括号)
- mac电脑利用file和iconv命令修改文件编码
- GB28181的NAT穿透
- IDM下载浮动条使用详解
- 第五章 神经网络和误差逆传播法算法(BP)的推导
- 【JS】每日一题:模块化
- matlab绘制不同角度的抛体运动
- 用Python爬取B站弹幕并做成词云
- 如何整合润乾报表到spring boot项目
- 归纳偏置/归纳偏差/inductive bias
- tensorflow--猫狗识别
- iOS 诡异的崩溃EXC_BREAKPOINT (code=1, subcode=0x1c5691d2c)
- python获取股票的市盈率_怎样查找股票的历史市盈率数据?
- CalibNet:Geometrically Supervised Extrinsic Calibration using 3D Spatial Transformer Networks阅读理解