位置: 编程技术 - 正文

TypeScript Type Innference(类型判断)

编辑:rootadmin

推荐整理分享TypeScript Type Innference(类型判断),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

TypeScript 是微软开发的 JavaScript 的超集,TypeScript兼容JavaScript,可以载入JavaScript代码然后运行。TypeScript与JavaScript相比进步的地方 包括:加入注释,让编译器理解所支持的对象和函数,编译器会移除注释,不会增加开销;增加一个完整的类结构,使之更新是传统的面向对象语言。

为什么会有 TypeScript&#;

JavaScript 只是一个脚本语言,并非设计用于开发大型 Web 应用,JavaScript 没有提供类和模块的概念,而 TypeScript 扩展了 JavaScript 实现了这些特性。TypeScript 主要特点包括:

TypeScript 是微软推出的开源语言,使用 Apache 授权协议

TypeScript 是 JavaScript 的超集.

TypeScript 增加了可选类型、类和模块

TypeScript 可编译成可读的、标准的 JavaScript

TypeScript 支持开发大规模 JavaScript 应用

TypeScript 设计用于开发大型应用,并保证编译后的 JavaScript 代码兼容性

TypeScript 扩展了 JavaScript 的语法,因此已有的 JavaScript 代码可直接与 TypeScript 一起运行无需更改

TypeScript 文件扩展名是 ts,而 TypeScript 编译器会编译成 js 文件

TypeScript 语法与 JScript .NET 相同

TypeScript 易学易于理解

语法特性

类 Classes

接口 Interfaces

模块 Modules

类型注解 Type annotations

编译时类型检查 Compile time type checking

Arrow 函数 (类似 C# 的 Lambda 表达式)

JavaScript 的 TypeScript 的区别

TypeScript Type Innference(类型判断)

TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。TypeScript 可处理已有的 JavaScript 代码,并只对其中的

TypeScript 代码进行编译。

在这一节,我们将介绍TypeScript中的类型推断。我们将会讨论类型推断需要在何处用到以及如何推断。

基础

在TypeScript中,在几个没有明确指定类型注释的地方将会使用类型推断来提供类型信息。

var x = 3;

变量"x"的值被推断为number。这种推断发生在变量或者成员初始化、设置参数默认值、决定函数返回类型的时候。

最佳公共类型

当需要从多个表达式中进行类型推断的时候,这些表达式的类型将会用来推断出一个"最佳公共类型"。例如:

var x = [0, 1, null];

要想推断出什么例子中"x"的类型,我们需要考虑每个数组元素的类型。这里,我们给出了两个数组类型的选择:number和null。最佳公共类型算法要求考虑到所有候选的类型,并选择出与所有候选类型兼容的类型。(这里的类型可为Array<number>)

由于最佳公共类型是从提供的候选类型中选择的,有些情况下,候选类型共享一个共同类型,但没有任何一个类型是所有候选类型的父类型。例如:

理想情况下,我们可能希望zoo被推断为Animal[]类型,但是因为数组中没有任何对象是严格的Animal类型,我们便不能做出推断。为了解决这个问题,当不能推断出所有候选类型的父类型的时候,我们需要明确的提供类型。

当没有最佳公共类型的时候,推断的结果是产生一个空对象,{}。因为这个类型不含任何成员,对于其任何属性的访问都会导致错误。这种结果依然允许我们在忽略类型的方式中使用对象,但在保障类型安全的前提下,该对象的类型不能被隐式的确定。

上下文(语境)类型

在TypeScript中,类型推断在某些情况下也存在于"其他方面"。这被称为"上下文归类"。上下文归类发生在当一个表达式的类型在其所在的上下文中被隐式的指定的时候。例如:

上面的代码将会给出一个类型错误,TypeScript的类型检查器使用Window.onmousedown函数的类型来推断右边的函数表达式类型。当它这么做的时候,便能够推断出参数mouseEvent的类型。 如果这个表达式不在可进行上下文归类的位置,参数mouseEvent 需要给定一个any类型,这样就不会出现错误了。

如果需要上下文归类的表达式内容中包含明确的类型信息,则会忽略上下文归类。我们重写上面的例子:

参数明确指定类型的函数表达式将会忽略上下文归类。经过这样的处理就不会报错了,因为没有应用到上下文归类。

上下文归类可应用于许多场景。常见的场景包括函数调用的参数、赋值的等号右边表达式、类型确定、对象成员和数组字面量、返回值语句。上下文类型也作为最佳公共类型的候选类型。例如:

在这个例子中,最佳公共类型有四个候选类型:Animal,Rhino,Elephant,和Snake。其中,Animal可以作为最佳公共类型。

形式有点像数学中的求最小公倍数...

关于Bootstrap弹出框无法调用问题的解决办法 问题描述写项目中使用到了前端框架bootstrap,提供的功能很强大!bootstrap学习然而在用bootstrap提供的弹出框组件时,弹出框怎么也弹不出!按理说应该

基于javascript制作微信聊天面板 本文实例分享了javascript制作微信聊天面板的相关代码,具体内容如下先上图吧点击头像更换说话对象,简单说下实现原理,html中创建一个ul用于存放所

javascript实现可键盘控制的抽奖系统 制作一个简易的抽奖系统!欢迎大家学习!JS原理:建立一个数组用来存储抽奖内容,例如iphone6等,当点击开始的时候,开启定时器,产生一个随机数,

标签: TypeScript Type Innference(类型判断)

本文链接地址:https://www.jiuchutong.com/biancheng/377477.html 转载请保留说明!

上一篇:JavaScript File分段上传(js分段上传)

下一篇:关于Bootstrap弹出框无法调用问题的解决办法(bootstrap弹出表单)

  • 固定资产清理亏损的账务处理
  • 承租方支付租房税费
  • 征收率 税率 区别
  • 私车公用协议可以入账吗?
  • 业务招待费进项
  • 股权变更涉及哪些税种
  • 减免增值税计入其他收益
  • 私人口腔诊所会感染艾滋病吗
  • 利息收入缴纳什么税
  • 小微企业增值税起征点是多少
  • 会计核算原则主要包括
  • 房地产公司苗木账务处理
  • 付的押金能要回来吗
  • 7月认证的发票7月可以抵扣吗?
  • 免租与转租分别什么意思
  • 预付费服务是什么
  • 预缴时少缴税款是否需要缴纳滞纳金?
  • 管理不善存货损失 企业所得税
  • 成本利润率的计算公式中,成本费用总额包括
  • 企业购入交易性金融资产支付的交易费用
  • 现金流量表的余额和资产负债表货币资金是不是一定相等
  • 应收账款结转下年要画红线吗
  • 小规模纳税人三万以下免税
  • 原材料暂估入库怎么做账
  • 员工宿舍固定资产检查通知
  • mac怎么修改图片格式jpg
  • 网络端口被占用怎么解决
  • 交易性金融资产的交易费用计入哪里
  • 固定资产原值减少说明什么
  • 王者荣耀中雅典娜的战争女神多少钱
  • 讲述人功能怎么关闭
  • win11系统语言修改不了
  • ac1203路由器
  • yii2框架结构
  • icon图标教程
  • 操作系统页表项怎么算
  • adas数据集
  • 京东到家的物流模式
  • free命令看到的内存
  • 所有者权益变动表模板excel
  • 股东出资不足需要赔偿吗
  • 普通发票作废要做账吗
  • 附加税多计提了怎么调整
  • 航空运输电子客票行程单查验
  • 购买财务软件怎么做凭证
  • 高新企业奖励金怎么开票
  • 劳动仲裁经济补偿金写多了
  • 暂估入库的商品作暂估冲红会计分录
  • 未付工资挂什么科目
  • 逾期的押金收入
  • 商品盘点短缺
  • 公司买的车如何入账举例说明
  • 生产成本增加记哪边
  • 外资房地产企业 利润汇出比例
  • workbench如何运行
  • xp如何给文件夹加密码
  • solaris11.4安装教程
  • 鼠标右键一直锁定一个应用
  • ensmix32.exe进程安全吗 ensmix32进程是什么文件产生的
  • 为什么电脑显示windows10即将终止服务
  • 查看win8.1版本
  • 如果在一个命令行上输入和执行多条命令
  • linux命令怎么删除
  • win8程序和功能在哪
  • vs2019创建安装程序
  • 记住密码自动登录 会更新登陆信息吗
  • mysql 导出指定表
  • shell脚本解压tar文件
  • 使用二氧化碳灭火器时人应该站在什么位置
  • 安卓手机本地
  • Unity3D游戏开发标准教程
  • python多线程操作
  • js框架开发实例
  • python中getattr函数例子
  • 国家税务总局手工发票查询平台
  • 松原江北小吃一条街
  • 江苏高速通行费标准
  • 沧州市养老保险局官网
  • 甘肃华能能源开发有限公司
  • 内蒙古自治区市
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设