TypeScript
TypeScript
许hao
这个作者很懒,什么都没留下…
展开
-
typescript改造搭建express基本服务
npm i -g express-generatorexpress ts-expresscd ts-expressnpm inpm i -d typescripttsc --init将工程中所有js文件更改为ts后缀bin目录下的www更名为server.ts会发现有很多报错报错是因为没有声明文件,安装即可npm i @types/node @types/express -d安裝后报错会少一些,根据报错提示,一步一步解决主要包括,express声明文件导出方式是export =.原创 2020-07-19 00:00:24 · 1125 阅读 · 2 评论 -
typescript_条件类型
1. 条件类型, 根据类型的赋值情况,来决定是那个类型如果T 可以被赋值给 U ,那么就是x , 否则就是yT extends U ? x : y1. 映射类型可以将某个类型接口的类型,进行拷贝,拷贝时,可以做一些转换type TypeName<T> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extend原创 2020-07-11 17:43:57 · 934 阅读 · 1 评论 -
typescript_映射类型_详细
1. 映射类型可以将某个类型接口的类型,进行拷贝,拷贝时,可以做一些转换interface Obj { a : string ; b : number ; c : boolean ;};1.1 将接口所有类型映射为只读属性接口// 将接口所有类型映射为只读属性接口/*type ReadonlyObj = { readonly a: string; readonly b: number; readonly c: boolean; } */ty原创 2020-07-11 17:41:34 · 443 阅读 · 0 评论 -
typescript_索引类型
1.索引类型let obj = { a : 1 , b : 2 , c : 3 ,};function getKey(obj : any , keys : string[]){ return keys.map((key)=>obj[key]);}//指定所包含的属性console.log(getKey(obj,["a" , "b"]));//放入不包含的属性,正常情况我们希望这种要报错console.log(getKey(obj,["c","f"]));原创 2020-07-03 00:06:31 · 391 阅读 · 0 评论 -
typescript_交叉类型和联合类型
1.1 交叉类型interface DonInterface { run():void;}interface CatInterface { jump():void;}//这里的pet将两个类型合并,所以pet必须保护两个类型所定义的方法let pet : DonInterface & CatInterface = { run:function(){}, jump:function(){}}1.2 联合类型let a : number | strin原创 2020-07-03 00:01:59 · 1474 阅读 · 0 评论 -
typescript_类型保护
1 . 类型保护//TypeScript 能够在特定的区块中保证变量属于某种确定的类型//可以做此区块中放心的引用次类型的属性,或者调用此类型的方法enum Type {Strong , Week};class Java { helloJava(){ console.log('Hello Java'); } java : string;}class JavaScript { helloJavaScript(){ console.原创 2020-07-02 23:57:45 · 221 阅读 · 0 评论 -
typescript_类型兼容
什么是类型兼容?当一个类型 Y 可以被赋值给另一个类型 X 时 , 我们就可以说类型 X 兼容 类型 YX 兼容 Y : X (目标类型) = Y (源类型)let a : string = "1";a = null;//正常这样书写会报错, 那么可以把ts的配置strictNullChecks 设置为false即可//这样就可以说, 字符型 是兼容 null类型的,也就是说null是字符类型的子类型//这里讨论类型的兼容性问题, 是因为ts在某种情况下,允许我们将不同类型的值进行赋值, 虽然原创 2020-07-01 00:10:23 · 271 阅读 · 0 评论 -
typescript_类型检查机制(1) 类型推断
1. 小试牛刀let a = 1 ; //typescript自动推断为any类型 a: numberlet b = [] ; //typescript自动推断为数组类型 any[]2. 当从多个类型进行推断时,ts尽力推断出所有属性都兼容的类型let c = (x = 1) => x + 1; //let c: (x?: number) => number3. 上下文推断-一般发生在事件的处理中window.onkeydown = (event : any) => {原创 2020-07-01 00:06:15 · 347 阅读 · 0 评论 -
typescript_泛型函数和泛型接口 泛型类与泛型约束
1.泛型函数和泛型接口function log<T>(value : T) : T{ console.log(value); return value;}log<number>(1);log<string>("1");log<object>({});log<string[]>(["1"])interface Log<T> { (value : T) : T;}let myLog : Log&原创 2020-07-01 00:03:49 · 675 阅读 · 0 评论 -
typescript_类与接口的关系
1. 类型接口1.1 接口可以约束类的定义1.2 类必须实现接口的全部定义,可以新增额外的属性和方法1.3 接口只能约束类的公有成员1.4 接口不能约束类的构造函数interface Human { name : string; eat () : void;}class Asian implements Human { constructor(name : string) { this.name = name; } name : str原创 2020-06-20 18:01:36 · 408 阅读 · 0 评论 -
typescript_抽象类与多态
1. 抽象类的定义1.1 抽象类 - 可以提取公用代码, 利于代码的复用和扩展1.2 抽象类不能直接实例化1.3 抽象方法,子类不需要实现该方法abstract class Animal { eat () { console.log("e") } abstract sleep() : void //抽象方法,子类必须实现该方法}class IsDog extends Animal { constructor(name : string) {原创 2020-06-20 17:57:49 · 390 阅读 · 0 评论 -
typescript_类的继承和修饰符
类的继承,必须在constructor中调用superclass Dog { constructor(name : string) { this.name = name; } public name : string;//修饰符公有成员,对所有人都是可见的 private pri(){};//修饰符 私有成员 ,只能在类的本身调用,不能做类的实例和子类调用,如果给constructor使用该修饰符,那么这个类既不能被实例化,也不能被继承 protec原创 2020-06-13 20:17:06 · 232 阅读 · 0 评论 -
typescript_函数相关知识点梳理
4种方式1.函数定义function add1 (x:number , y :number){ return x + y}2.通过变量定义函数类型let add2 : (x: number , y : number) => number;3.通过类型别名定义一个函数类型type add3 = (x:number , y : number) => number;4.通过接口定义函数类型interface add4 { (x: number , y : num原创 2020-06-13 20:10:22 · 170 阅读 · 0 评论 -
typescript_对象类型接口_详细
1.参数固定属性,且函数返回值必须是number类型 let isAdd : (x : number , y : number) => number; 2.参数固定属性,且函数返回值必须是number类型,跟上面是等价的 interface Add { (x:number , y:number) : number } 3.类型别名,相当于给函数起一个名字 type Add = (x: number , y: number) => number;let isadd :.原创 2020-06-13 20:04:41 · 489 阅读 · 0 评论 -
typescript_枚举类型
在使用枚举类型之前,一般用于灵活的参数上不用那么硬编码, 改一个参数,就要动整个结构 1.1 数字枚举// 可以指定某个属性的值,而下面的属性的值会跟着递增// 数字枚举存在反向映射,即可以通过key读取,又可以通过值读取enum Role { Reporter, Developer, Maintainer, Owner, Guest} 1.2 字符串枚举// 字符串枚举不存在反向映射,因此只能通过key读取enum Message { .原创 2020-06-13 19:59:48 · 151 阅读 · 0 评论 -
typescript_对象类型接口
对象类型接口interface List { readonly id : number, //只读属性不可修改 name : string, // [x : string] : any age ? : string};interface Result { data:List[]};function render(result : Result){ result.data.forEach((item)=>{ console.l.原创 2020-06-13 19:58:58 · 215 阅读 · 0 评论 -
typescript_基本类型
typescript 所拥有的类型和es6所拥有的类型比较 1.1 原始类型let bool : boolean = true;let num : number = 1;let str : string = "1"; 1.2 数组let arr1 : number[] = [1,2,3,4];let arr2 : Array<number> = [1,2,3,4];//Array<>相当于泛型let arr3 : Array<number | stri.原创 2020-06-13 19:51:59 · 199 阅读 · 0 评论 -
typescript_搭建开发环境
npm initnpm i typescript -Dnpm tsc --init新建src,index.ts5.npm i webpack webpack-cli webpack-dev-server -D根目录新建build文件创建4个文件webpack.base.config.js webpack配置公共文件webpack.config.js webpack总配置文件webpack.dev.config.js webpack开发配置文件webpack.pro.config.原创 2020-06-13 19:38:09 · 259 阅读 · 0 评论