当前位置: 首页 > news >正文

哪些做网站的公司广告公司是做什么的

哪些做网站的公司,广告公司是做什么的,做seo是要先有网站吗,photoshop怎么做网站草图Decorator 装饰器是一项实验性特性,在未来的版本中可能会发生改变 它们不仅增加了代码的可读性,清晰地表达了意图,而且提供一种方便的手段,增加或修改类的功能 若要启用实验性的装饰器特性,你必须在命令行或tsconfig…

Decorator 装饰器是一项实验性特性,在未来的版本中可能会发生改变

它们不仅增加了代码的可读性,清晰地表达了意图,而且提供一种方便的手段,增加或修改类的功能

若要启用实验性的装饰器特性,你必须在命令行或tsconfig.json里启用编译器选项

类装饰器  ClassDecorator

/*** 类装饰器  ClassDecorator* @param target  形参  target 是形参,可以是任何名字* @param  result  返回结果:构造函数* @param name* */
// const Base:ClassDecorator = (target)=>{
// 	target.prototype.heming  = "鹤鸣"
// 	target.prototype.fn = () =>{
// 		console.log('装饰器')
// 	}
// }// 如果用户要传参数可以使用(闭包 或者 函数柯里化 或者 工厂函数)
const Base = (name:string) => {const fn: ClassDecorator = (target) => {target.prototype.heming = nametarget.prototype.fn = () => {console.log('装饰器')}}return fn
}@Base('鹤鸣')
class Http {}const http = new Http() as any
console.log(http.heming)// 或者怕不兼容可以
class Http{}const http = new Http() as any
Base(Http)
http.fn()

方法装饰器 MethodDecorator 

/*** 方法装饰器 MethodDecorator 接受三个参数* @param target 原型对象 不再是构造函数* @param key 方法的名字* @param descriptor PropertyDescriptor 描述符* */
const Get = (url:string) => {const fn:MethodDecorator = (target:any, key , descriptor:PropertyDescriptor) => {axios.get(url).then((res) => {descriptor.value(res.data)})}return fn
}const Post = (url:string) => {const fn:MethodDecorator = (target:any,key, descriptor:PropertyDescriptor) => {axios.post(url).then((res)=>{descriptor.value(res.data)})}
}@Base('鹤鸣')
class Http {@Get('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')getList(@Result() data: any) {console.log(data.result.list, 'data')}@Post('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')create() {}
}

3.参数装饰器


/*** 参数装饰器 ParameterDecorator* @param  target 原型对象* @param  key 方法名* @param index 数据所在的位置* @param  reflect-metadata  数据的反射* */const Result = () => {const fn: ParameterDecorator = (target, key, index) => {Reflect.defineMetadata('key', 'result', target)}return fn
}@Base('鹤鸣')
class Http {@Nameheming: stringconstructor() {this.heming = '鹤鸣'}@Get('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')getList(@Result() data: any) {console.log(data, 'data')}// @Post('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')create() {}
}const http = new Http() as any

综合代码

// 1.类装饰器 ClassDecorator  target 返回的是一个构造函数
//2.属性装饰器 PropertyDecorator
//3.参数装饰器 ParameterDecorator
// 4.方法装饰器 MethodDecorator PropertyDescriptor
// 5.装饰器工长
// 6. import 'reflect-metadata'
// 7.axios
import axios from 'axios';
import 'reflect-metadata'/*** 类装饰器  ClassDecorator* @param target  形参  target 是形参,可以是任何名字* @param  result  返回结果:构造函数* @param name* */
// const Base:ClassDecorator = (target)=>{
// 	target.prototype.heming  = "鹤鸣"
// 	target.prototype.fn = () =>{
// 		console.log('装饰器')
// 	}
// }// 如果用户要传参数可以使用(闭包 或者 函数柯里化 或者 工厂函数)
const Base = (name: string) => {const fn: ClassDecorator = (target) => {target.prototype.heming = nametarget.prototype.fn = () => {// console.log('装饰器')}}return fn
}/*** 方法装饰器 MethodDecorator 接受三个参数* @param target 原型对象 不再是构造函数* @param key 方法的名字* @param descriptor PropertyDescriptor 描述符* */
const Get = (url: string) => {const fn: MethodDecorator = (target: any, _key: any, descriptor: PropertyDescriptor) => {let key = Reflect.getMetadata('key', target)axios.get(url).then((res) => {descriptor.value(key ? res.data[key] : res.data)})}return fn
}// const Post = (url:string) => {
// 	const fn:MethodDecorator = (target:any,key, descriptor:PropertyDescriptor) => {
// 		axios.post(url).then((res)=>{
// 			descriptor.value(res.data)
// 		})
// 	}
// }/*** 参数装饰器 ParameterDecorator* @param  target 原型对象* @param  key 方法名* @param index 数据所在的位置* @param  reflect-metadata  数据的反射* */const Result = () => {const fn: ParameterDecorator = (target, key, index) => {Reflect.defineMetadata('key', 'result', target)}return fn
}/*** 属性装饰器 PropertyDecorator* @param target 原型对象* @param key 属性* */
const Name: PropertyDecorator = (target, key) => {console.log(target, key)
}@Base('鹤鸣')
class Http {@Nameheming: stringconstructor() {this.heming = '鹤鸣'}@Get('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')getList(@Result() data: any) {console.log(data, 'data')}// @Post('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')create() {}
}const http = new Http() as any
// console.log(http.heming)// 或者怕不兼容可以
// class Http{
//
// }
//
// const http = new Http() as any
// Base(Http)
// http.fn()

http://www.ysxn.cn/news/268.html

相关文章:

  • 深圳专业做网站专业网络营销策划书总结
  • 如何汉化wordpress主题东营网站seo
  • 百度站长工具域名查询百度站长统计
  • 加强企业门户网站建设目前最新的营销方式有哪些
  • 手机购物网站模板常州百度关键词优化
  • 做火影忍者网站的格式营销网课
  • 一级做爰网站深圳网络推广收费标准
  • 那个网站可以做网络兼职seo站群优化
  • 佛山外包网站建设麒麟seo外推软件
  • 网站建设的安全性株洲seo优化
  • 外贸做平台好还是自己建网站好免费的关键词挖掘工具
  • 重庆微信企业网站百度竞价包年推广是怎么回事
  • 网站开发委托协议百度网盘网页版入口
  • 网销都是在那些网站做推广做个公司网站大概多少钱
  • 去哪里学做网站app宁波网站推广运营公司
  • 织梦做英文网站出现乱码win7优化大师
  • 武汉网站程序外包网站页面优化方法
  • 建可收费的网站百度指数有什么作用
  • 做网站的产品图片整站优化方案
  • 企业公司做网站长尾关键词举例
  • 梦扬科技 合肥网站建设网站关键词seo排名
  • 网站建设前 沟通内容百度实时热点排行榜
  • av手机在线精品泰州seo外包
  • 江门网站推广深圳公司站长之家素材网站
  • 万网的域名怎么交易seo关键词快速提升软件官网
  • 如果在网站做推广连接it培训机构排名
  • 怎么在百度搜到自己的网站广东优化疫情防控措施
  • 这样做微信网站深圳营销型网站建设
  • 上海网站建设升级阿里指数查询官网入口
  • 吉林做网站找谁万能搜索引擎网站