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

市直单位政府网站建设问题qq推广引流怎么做

市直单位政府网站建设问题,qq推广引流怎么做,网站建设的总体需求是什么,汉化主题做网站效果图困惑 初学 ts 时,extends 让我很困惑:有时它代表 扩大 ,有时代表 缩小 。举几个例子说明: 例1: class Animal {} class Dog extends Animal {}这是 js 本身就有的 class 继承语法,很熟悉了。 Dog 是 An…

困惑

初学 ts 时,extends 让我很困惑:有时它代表 扩大 ,有时代表 缩小 。举几个例子说明:

例1:
class Animal {} 
class Dog extends Animal {}

这是 js 本身就有的 class 继承语法,很熟悉了。
Dog 是 Animal 的子类,是对 Animal 的扩展,可以比 Animal 有更多的属性和方法。
extends 似乎代表 扩大

例2:
type MyPick<T, K extends keyof T> = {[P in K]: T[P];
};

K extends keyof T 的含义是“K 是 keyof T 的子集”。K 的取值被限制在 keyof T 内,可以少,不能多。
extends 似乎代表 缩小

例3:
function longest<T extends { length: number }>(a: T, b: T) {return a.length >= b.length ? a : b;
}

T extends { length: number } 要求 T 必须有 length 属性,这样在函数体中才可以直接使用 a.length 和 b.length。
T 除了 length,还可以有其他属性和方法。
extends 似乎代表 扩大


解释

说扩大或者缩小其实含义很模糊,没有实际意义。因为没有明确主语:具体是什么扩大/缩小了。

ts 中的 extends 应该用 子类型(assignable) 去理解。

子类型:如果在期望类型 T 的实例的任何地方,都可以安全地使用类型 S 的实例,那么称类型 S 是类型 T 的子类型。

如果我们能够把任何值赋给类型 T,那么称 T 为顶层类型。其他任何类型都是 T 的子类型。ts 中的顶层类型是 unknown,java 中的顶层类型是 Object

如果类型 T 是其他任何类型的子类型,那么称 T 为底层类型。ts 中的底层类型是 never,是不能被赋值的空类型。可以类比集论中的概念:空集是任何集合的子集。

大白话总结:unknown 是终极父类,never 是终极子类。

所以,子类型 extends 父类型,至于是扩大还是缩小要看考虑问题的角度。用上面的例1说明:

class Animal {} 
class Dog extends Animal {}
  • Dog 比 Animal 有更多的属性和方法。这个角度看,Dog 是对 Animal 的扩展。
  • Dog 对 Animal 加了限制,所以 Dog 能取的值比 Animal 要少:Dog 一定是 Animal,但 Animal 不一定是 Dog。这个角度看,Dog 是对 Animal 的缩小

大白话总结:子类特性多了,可取值少了。


引申

前提 Dog extends Animal,考虑下面几种类型的关系:

  • Dog[]Animal[] 的关系
  • () => Dog() => Animal 的关系
  • (arg:Dog) => void(arg:Animal) => void 关系

答案:

  • Dog[]Animal[] 的子类型
  • () => Dog() => Animal 的子类型
  • (arg:Animal) => void(arg:Dog) => void 的子类型。注意这里反过来了。稍微有点绕,用 assignable 的思路去考虑

另外,ts 中强行规定了 (arg:Dog) => void 也是 (arg:Animal) => void 的子类型。这样是不安全的,运行时可能出错。但是 ts “为了方便实现常见的js编程模式“,就是这样设计了。


最后说一说 ts 中的 any。虽然 any 和 unknown 常被放在一起讨论,但其实性质完全不同。在 ts 中,unknownnever 都是正规的类型体系的一部分。但 any 完全在这个体系之外:

ts 中,所有值都可以赋给 any 类型,any 类型的值也可以赋值给其他任何类型,从而绕过类型检查。

写代码时如果用了 any 类型,就代表着:我完全知道我在做什么,这一部分代码的安全与正确性我自己负责。ts 请无视这段代码,不要进行任何类型检查。

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

相关文章:

  • 淘宝美工做倒计时图片网站快速优化系统
  • 59一起做网站网店推广的渠道有哪些
  • 网站开发的分工和流程seo服务运用什么技术
  • 滨海建设局官方网站seo网站查询
  • 哪有做网站的 优帮云搜狗快速收录方法
  • 网站开发模杭州百度百家号seo优化排名
  • 比较大的软件下载网站免费seo工具汇总
  • 开源镜像网站怎么做网页百度
  • 建设网站网上银行登录北京营销推广公司
  • 鸿蒙系统开发教程成都网络优化托管公司
  • 广州专业做外贸网站微信小程序开发公司
  • 如何用vs的c 做网站关键词搜索排名工具
  • 网站做seo多少钱推广网站推广
  • asp.net网站开发简明教程宁波seo智能优化
  • 做网站需要哪些技术优秀软文营销案例
  • 优秀网站模板南京seo推广公司
  • 平顶山做网站的公司企业培训课程
  • 稿定设计网站官网win7优化大师官网
  • 二手商品网站制作最近发生的重大新闻
  • 个人可以做哪些网站seo评测论坛
  • 淮南市网站开发的方式网络运营培训哪里有学校
  • wordpress转typecho插件广告投放优化师
  • 六安杂谈seo免费优化网址软件
  • 中国制造网效果怎么样优化营商环境心得体会1000字
  • 企业网站建设太原网站建设病毒式营销
  • 营销型网站建设培训推广引流渠道平台
  • 大连网站怎么推广网站测速
  • 怎么用qq相册做网站seo快速软件
  • 网站需求分析报告友情链接怎么设置
  • 商城版免费网站制作太原网站快速排名提升