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

做网站都是怎么收费制作网站的最新软件是什么

做网站都是怎么收费,制作网站的最新软件是什么,外贸建设企业网站服务,信息科技公司网站目录 构造函数表达 泛型和函数 泛型函数 Contextual Typing【上下文映射,上下文类型】 泛型约束 手动指定类型 泛型的使用规范 对比 可选参数 思考:onClick中e的设计 函数重载 修改办法 操作符重载 THIS void【空返回值】 思考为什么这样…

目录

构造函数表达

泛型和函数

泛型函数

Contextual Typing【上下文映射,上下文类型】

泛型约束

手动指定类型

泛型的使用规范

对比

可选参数

思考:onClick中e的设计

函数重载

修改办法

操作符重载

THIS

void【空返回值】

思考为什么这样写?

Rest params

小结


构造函数表达

type SomeConstructor = {new (s: int):String
}
function fn(ctor: SomeConstructor) {return new ctor("hello")
}
const str = fn(String)
console.log(str) // hello

泛型和函数

泛型函数

function firstElement<Type>(arr: Type[]):Type {return arr[0]
}

Contextual Typing【上下文映射,上下文类型】

// map : a -> b
function map<Input, OutPut>(arr: Input[], func: (arg: Input) => Output): Output[] {return arr.map(func); //  Output[]
}
const parsed = map(["1", "2", "3"], (n) => parseInt(n))
// [1,2,3]

泛型约束

function minimumLength<Type extends { length: number }>(obj: Type,minimum: number
): Type {if (obj.length >= minimum) {return obj;} else {return { length: minimum };// 不能将类型“{ length: number; }”分配给类型“Type”。// "{ length: number; }" 可赋给 "Type" 类型的约束,// 但可以使用约束 "{ length: number; }" 的其他子类型实例化 "Type"}
}

手动指定类型

function combine<Type>(arr1: Type[], arr2: Type[]):Type[] {return arr1.concat(arr2);
}
const arr = combine([1,2,3], ["hello"]);// Error 不能将类型“string”分配给类型“number”。
const arr2 = combine<string | number>([1,2,3],["hello"]) // 手动指定string | number

泛型的使用规范

// 泛型的参数越简化越好,最少支持原则,高效,参数少
function firstElement1<Type>(arr: Type[]) { // 更简单 √,方便阅读return arr[0];
}
function firstElement2<Type extends any[]>(arr: Type) {return arr[0]
}

对比

对比下一组,哪个更好?

function filter1<T>(arr: T[], func: (arg: T) => boolean): T[] { 
// √ 泛型参数少,读起来方便return arr.filter(func);
}
function filter2<T, Func extends (arg: T) => boolean>(arr: T[], func: Func): T[] { 
// Func这个泛型没有必要return arr.filter(func);
}

可选参数

function myForEach(arr: any[], callback: (arg: any, index?:number)=> void){
// 可选参数index?:for (let i = 0; i < arr.length; i++) {callback(arr[i], i);    }
}

思考:onClick中e的设计

<div onClick={ e=>{} }></div> // e是可选参数
<div onClick={ ()=>{} }></div> // e是可选参数

函数重载

function add3<T> (a: T, b: T ) {return a + b // Error 运算符“+”不能应用于类型“T”和“T”。
}
// a,b不一定可以相加
// 函数的重载,可多次,基础方法
function add(a:number,b:number); // add(1,2)
function add(a:string,b:string); // add("1","2")
function add(a:number,b:string); // add(1,"2")
function add(a:string,b:number); // add("1",2)
function add(a:string); // add(1)
function add(a: any,b?:any) {if(!b) {b = 1    }return a + b
}

修改办法

function isSet<T>(x: any): x is Set<T> {return x instanceof Set
}
function add(a: number, b: number): number;
function add(a: string, b: string): string;
function add<T>(a: Set<T>, b: Set<T>): Set<T>;
function add<T>(a: T, b: T): T {if (isSet<T>(a) && isSet<T>(b)) {return new Set([...a, ...b]) as any}return (a as any) + (b as any)
}
const a = new Set<string>(["apple", "redhat"])
const b = new Set<string>(["google", "ms"])
console.log(add(a, b))
console.log(add(1, 2))
console.log(add("a", "k"))

操作符重载

THIS

interface DB {exec(sql: string) => any
}
function runSql(this: DB, sql: string) {this.exec(sql)
}
runSql.bind(new DB()).("select * from user")

void【空返回值】

// void
type voidFunc = () => void;
const f1: voidFunc = () => {return true;
}
const f2: voidFunc = () => true
const f3: voidFunc = function () {return true;
}

思考为什么这样写?

function safeParse(s: string): unknown { // 比any安全return JSON.parse(s); // as 断言;断言之前,unknown值是不能直接赋值给其他变量的
}

Rest params

// JS本身有这个方法
function multiply(n: number, ...m: number[]) {return m.map((x) => n * x);
}
// 无法重新声明块范围变量“a”。
const a = multiply(10, 1, 2, 3, 4);

小结

  • 重新思考泛型的作用?提供对共性的抽象,// add , filter
  • 思考函数重载的意义?为函数提供了更严格的类型检查方式,能让真正使用any这样的函数,作为参数,把它窄化,更精确的类型去表达,所有函数调用的类型都是准确的
http://www.yayakq.cn/news/301824/

相关文章:

  • 表白墙网站怎么做做网页的工具
  • 网站建设服务非常好湖南岚鸿公司网站的内容更新
  • 建设网站管理规定如何给网店做推广
  • 老网站怎么做seo优化唐河县住房和城乡建设局网站
  • 大良网站建设机构网站权重低
  • 建设网站360丹阳做公司网站的
  • 网站开发图书管理系统报告摘要科技有限公司简介模板
  • 主题资源网站建设步骤腾讯做网站
  • 做门窗网站怎么做西安高风险地区
  • wordpress 视频预览长沙网站seo哪家公司好
  • 哈尔滨快速建站专业定制东莞排名优化怎么做
  • 个人网站制作多少钱浦东新区办营业执照哪里办
  • 网站的建设框架江门营销型网站建设多少钱
  • 一个人网站开发网站建设推广招代理加盟
  • 开发一个手机网站要多少钱云主机重装系统后网站重新部署吗
  • 网站换空间 seo广州专业的网站推广工具
  • 做外汇上什么网站看新闻个人域名做企业网站
  • 茶叶网站模板 html计算机应用技术专业主要学什么
  • 营销型网站建设公司哪家好大宅别墅设计装修公司
  • 游戏网站cms网站正在建设
  • 在线黑科技网站上海做网站最专业
  • 在百度上怎么卖自己的产品东莞网站seo优化
  • 三水做网站想接外包做网站
  • 蔬菜派送网站怎么做手机网站安装
  • 学做网站 空间 域名老客外链
  • 网站模板安装好后自做网站代码是多少
  • 网站优化分析深圳的网站建设公司有哪些
  • 开网站做外贸网站域名什么意思
  • 网站广告图片设计教程上海松江区做网站公司
  • 下载 iis 网站网络营销是一种无媒介销售