前端二:TypeScript+ES

一、 TypeScript

1. function a( p1:int):number

        {
                 return p1+1;
        }

2. 类型

在这里插入图片描述
字面量
let c:11212 这样c 只能是11212
联合类型
let c: boolean | string 。 c可以是bool 或着是 string
let q: {Name:string} & {Age:number}
q={Name=“aaasd”,Age=19}

类型断言
s= e as string 或 s= e;
any类型的变量可以赋值给任何变量,相当于不进行类型检测了

unknown 是一个类型安全的any,不能直接赋值给其他变量,如果要赋值,需要进行下面操作。
if(typeof e===“string”)
s=e;
object 对象
let b:{name?:string} // ?表示属性是可选的
let b:{name:string,[propName:string]:any} //[propName:string]:any表示任意属性

function 函数
let d:(a: number, b:number)=>string; //参数a与b, 返回是string的函数。
枚举 Enum
enum Gender{ Male=0,Female=1}
类型别名 type myType=1|2|3|4|5

3 面向对象 类

class Dog :extends xxxx {
constructor(name:string,age:number) //构造函数;
{
this.name=name; this.age=age; //可以在此定义属性
}
}
// extends xxxx继承,
子类可以覆盖父类的方法。
如果不想覆盖父类的方法,可以用 _super 关键字
父类 如果子类有构造函数,必须调用一下父类的构造函数 。super()

4 抽象类 abstract class

 不可定义实例。    
 可以添加抽象方法        abstract  sayHello():void ;

5 接口

interface myInterface{
name:string;
age:number;
}

类型定义
type myType{
name:string,
age:number
}
接口可以重复声明。 如果声明两个, 则可是两个的合并
接口可以定义类的时候,限制类的结构

6 属性的封装

public 修饰的属性可以在任何位置修改 ,默认
private 类的内部修改。
protect 能在当前类或子类中有效
get set 方法
一般 getName(){} 或 get name() {}

7 泛型

类型不明确的时候, 可以使用泛型
定义
function fn(a:T) :T{
return a;
}
function fn<T,K>(a:T,b:K) :T{
return a;
}
// 限制泛型的范围
function fn<T extends interger,K>(a:T,b:K) :T{
return a;
}
class Myclass {
name:T;
constructor(name:T){ this.name=name;}
}
使用
fn(10); //TS 可以推断, 不是所有的都能推断出来
fn(10);

ES

1 定义

 ECMA script European computer manufacture association
 ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。

2 变量的解构赋值

const zhao={name:"赵",age:10,fnSing():{console.log('爱哦我中华')}
解构    let {name,age, fnSing)=zhao;
还有一种就是  .....

3 模版字符串 ‘’

 支持换行, 支持通过${变量} 进行拼接
 let  name=‘张’;
 let Hello=‘${name}:
                       欢迎您’ 

4 对象的简化写法

let name=‘张';
const school ={
     name,     //相当于   name=name;
     improve() {}  //相当于 improve= function(){}
}

5 箭头函数

let fn=(a:int ,b:int )=>{return a+b;}
注意  此处的this 是静态的, 始终指向函数声明时所在的作用域
     一般函数, this , 是谁调用就是谁。   可以对象的实例调用, 也可用call 方法   fn.call()
     不可作为构造函数
     不能使用  arguments变量
     箭头函数的简写    省略小括号,当形参有且 只用一个的  let add=n=>{}
                              省略花括号,代码只有一条语句, return 也省略

函数参数赋值初始值

     function connect ( {host="",username})

Rest 可以获取实参,用来代替arguments

 function   fn(a,b , ...argu){}

扩展运算符

数组i的合并 const 合并数组=数组1.concat(数组2)
或 const 合并数组=[…数组1 , …数组2)
数组的克隆 const 克隆后的数组=[…克隆前的数组]
将伪数组 const 克隆后的数组=[…克隆前的数组]

Symbol数据类型

Promise

const p =new Promise(function (resolve,reject){
可调用 resove(xxx)状态变成成功,会调用then的第一个函数
reject(xxxx) 状态变成失败,会调用then的第二个函数
})
p.then(fuction(value){},function (reason){}}

对象方法的扩展

1Object.is //判断两个值是否完全相等
2. Object.assign 对象的合并
3. Object.setPrototypeOf 设置原型对象

模块化

防止命名冲突, 代码复用, 高维护性
export
暴露方法 1, 分别暴露 export let school=‘’;
2 . 统一暴露 export {school,others}
3. 默认暴露 export default {school :‘’, change:function(){}}

import
<script type="module>
1 通用模式 import * as m1 from …xxx.js 这样xxx.js 所有的导入, 都放到m1了。
2. 解构方式 import {school as alias, change} from “xxxx.js”
import {default as aa} from
3. 渐变形式只是针对默认暴露 import school from
在项目中, 使用 bable 。
在这里插入图片描述

ECMAScript 8

 async 
 async fuction fn()  
 { 只要返回的不是Promise对象,就返回Promise对象
     如果,throw , 则返回一个失败的promise
      如果返回结果是promise对象,则,fn返回的值就是promise返回的值。
 }

await 必须放到 async函数中。
await 右侧的必须是一个promise对象
await
发送ajax 请求
function sendAJAX(url)
{ return new Promise((resolve,reject)=>{
const x=new XMLHttpRequest();
x.open(‘GET’,url);
x.send()
x.onreadystatechange=function(){
if(x.readyState===4) if(x.status>200<300) resolve(x.response);
else reject(x.status)
}
}

  sendAJAX("").then(value=>{},reason=>{})
 
 async function main(){
      let result= await sendAJAX("")
      console.log(result)
 }

ECMAScript 11 动态import 懒加载

import(‘./hello.js’).then(module=>{modulue.methodname();})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不货之年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值