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

高端网站的建设中国核工业第五建设有限公司待遇怎么样

高端网站的建设,中国核工业第五建设有限公司待遇怎么样,一个好的网站建设,商城网站建设要多少钱目录 泛型的概念 接口是对方面的描述(Aspect),继承其中几个方法。重定义方法 泛型是对共性的提取 泛型(Generics) 泛型的例子 泛型类 推荐写法 泛型约束 keyof操作符 泛型的特化(实例化&#xff…

目录

泛型的概念

接口是对方面的描述(Aspect),继承其中几个方法。重定义方法

泛型是对共性的提取

泛型(Generics)

泛型的例子

泛型类

推荐写法

泛型约束

keyof操作符

泛型的特化(实例化)

小结


泛型的概念

  • 对比这3个概念,思考他们的区别:
    • interface(接口)
      • Car is runnable
    • Extend(继承)
      • Car is machine
    • Generics(泛型)
      • Runnable
// 接口写法
interface Runnable { // 接口run() : number
}
interface Repairable {repaire(): void
}
class Car implements Runnable, Repairable {run() : number {return 1    }repaire(){return    }
}
// 继承写法;不是首选,因为它的祖类可能功能太多了,不一定适应子类
class XXXCar extends Car {run() : number {return 1    }repaire(){return    }
}

接口是对方面的描述(Aspect),继承其中几个方法。重定义方法

  • 小孩可以长大
    • 小孩是Growable
  • 动物可以进化
    • 人是Evolvable

泛型是对共性的提取

  • 木头可以做桌子
    • 木头是:DeskMakable?
    • 木头还可以:burn/wash/play...(耦合)
  • 泛型的表达
    • DeskMaker<Wood>
    • DeslMaler<Iron>
interface Material {getHardness(): number;
}
class DeskMake <T extends Material> { // 做桌子的泛型material : T // 材料make() {const hardness = this.material.getHardness()    }
}
// 泛型的解耦
const maker = new DeskMaker<Wood>()// 做木头桌子
const maker = new DeskMaker<Iron>()// 做铁桌子

泛型(Generics)

  • 对共性的抽象
  • 将类型作为参数
  • 更好的分离关注点

泛型的例子

// 一个identity函数是自己返回自己的函数
// 当然可以声明它是:number =>number
function identity(arg:number): number {return arg;
}
// 为了让identity支持更多类型可以声明它是any
function identity(arg:any):any {return arg;
}
// any会丢失后续的所有检查,因此可以考虑用泛型
function identity<Type>(arg:Type): Type {return arg;
}
let output = identity<string>("MyString")
// 不用显示的指定<>中的类型
// let output = identity("MyString")
output = 100 // Error

泛型类

class GenericNumber<NumType> {zeroValue: NumType;add: (x: NumType, y : NumType) => NumType;
}
let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
// (number, number) -> number
myGenericNumber.add = function (x,y) {return x + y;
}
let stringNumeric = new GenericNumber<string>();
stringNumeric.zeroValue = "";
stringNumeric.add = function (x,y){return x + y;
}

推荐写法

class GenericNumber<T> {zeroValue: Tconstructor(v:T) { // 构造器this.zeroValue = v    }add(x:T,y:T) {return x + y    }
}

泛型约束

type lengthwise = {length: number
}
interface lengthwise {length: number
}
function loggingIdentity<Type extends {length: number
}>(arg: Type): Type {console.log(arg.length);return arg
}

keyof操作符

type Point = { x:number; y: number };
type P = keyof Point;
// P = "x" | "y"
function foo(x: keyof Point) {}

泛型的特化(实例化)

function create<Type>(c: { new(): Type }): Type {return new c();
}
create(Array) // Array的实例 => new Array()
create(Array<string>)// Error,不能完全替代实例化函数 

小结

  • 泛型解决了什么问题?解决了在我们做程序设计的时候,对于很多共性的抽象的问题,同时也解决了很多共性问题类型设计不够严格的问题。
  • 什么时候用接口?什么时候用泛型?当你想约束一个类型,它有哪些成分的时候用接口,当你想提取一类东西共性的时候我们用泛型
  • 下面方法是否成立?不成立
function add<T>(a:T,b:T){return a + b
}

http://www.15wanjia.com/news/169266.html

相关文章:

  • 网站404 原因wordpress frame
  • 查网站开发者业之峰
  • 关键词爱站网关键词挖掘工具品牌网站建设流程
  • 北京南站附近景点铁道部售票网站多少钱建设
  • 家电网站设计最新购物网站建设框架
  • 网站开发和ui的区别一手项目对接app平台
  • 网站建设冫首选金手指网站开发建设须知
  • 新网站没有死链接怎么做前端开发和后端开发哪个好些
  • 宜宾建设招标网站知名网站建设怎么样
  • 网站维护升级完成网络网站建设电话推销
  • 网站搜索工具腾讯公众号小程序
  • 单位网站链接怎样做贵阳网站建设zu97
  • 工程行业做的好的网站有哪些内容谷歌搜索引擎363入口
  • 什么是权重高的网站产品运营主要做什么
  • 做网站用html创网站 灵感
  • 影视广告制作拍摄公司seo查询友情链接
  • 网站主体关闭 无法备案全网推广推荐
  • 徐州网站开发兼职西安房产网
  • 唐山网站怎么做seo怎么自己制作网页
  • dtcms网站开发更好的网站制作
  • 公司内部交流 网站模板企业网站 微信里怎么做
  • 做app要不要建网站做模型挣钱的网站
  • 雅安市建设工程招投标网站项目计划书ppt模板免费
  • 个人网站可以备案吗广东网站快速备案
  • 帮忙做文档的网站怎么爬虫做网站
  • 可信网站认证代理邯郸设计公司有哪些
  • 建设网站的价格分析免费wordpress搭建
  • 关于网站建设的意义WordPress模版二次元
  • 惠州 光电 网站上线品牌设计公司深圳
  • 云南云南省城乡建设厅网站工业设计优秀作品