写点什么

TypeScript 2.2 添加了新的对象类型,更好的混入(Mixin)支持和更多新特性

  • 2017-02-15
  • 本文字数:1132 字

    阅读完需:约 4 分钟

计划在二月里发布的 TypeScript 2.2 已经进入了发布候选版(RC)的阶段。除了包括一个新的用于Native React 的 JSX emit 模式,TypeScript 2.2 还包含了一个新的用于表示非原生(non-native)的object类型和更好的混入( mixin) 支持以及组合类还有更多其他的新特性。

TypeScript 2.2 新的object类型使得只能接受非原生类型的方法签名更加规范化。这是一个例子,例如Object.getPrototypeOfObject.create等等。它在语法上能接受所有的类型,但是在编译时会抛出一个异常。例如,对于一个字符串或者一个数字,object类型会在编译时捕获到这种误用:

复制代码
function mapObject(obj: object): object { /* ... */ }
...
mapObject('string');// 类型错误

TypeScript 2.2 也为创建混入(mixin)和组合类添加了更多的灵活性。例如,你现在可以创建一个带有Point对象构造器的方法,通过添加一个timestamp来声明一个继承自Points的新类,并且返回一个新的TimestampedPoint混入(mixin)类,这个类能被实例化也能被继承

复制代码
class Point {
...
}
export type Constructable = new (...args: any[]) => object;
export function Timestamped<bc constructable="" extends="">(Base: BC) {
return class extends Base {
timestamp = new Date();
};
const TimestampedPoint = Timestamped(Point);
const p = new TimestampedPoint(10, 10);
class SpecialPoint extends Timestamped(Point) {
z: number;
constructor(x: number, y: number, z: number) {
... }
}</bc>

TypeScript 提供对 JSX 的长期支持,JSX 是一种类XML 语言拓展,它没有明确的语义,这种语义是用来表示带有属性值的树结构的。一个典型的,但不是专门的用法是用它来描述UI 组件。截止到2.1 版本,TypeScript 已经能够通过两个特定的emit 模式来处理在 tsx文件中的 JSX 表达式:preservereact。前者用来保留 JSX 表达式,为的是在之后的阶段中处理它。后者会使用React.createElement来创建一个js文件。在 2.2 版本中,有一个新的react-native模式,它的做法是完整保留所有的 JSX 表达式,同时会生成一个js文件,这个文件是 React Native 所需的文件。

TypeScript 2.2rc 包含其它更多的新特性,例如:

你可以通过运行以下命令来试用 TypeScript 2.2rc:

npm install -g typescript@rc查看英文原文: TypeScript 2.2 Adds New Object Type, Better Mixin Support, and More


感谢刘志勇对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-02-15 18:001655

评论

发布
暂无评论
发现更多内容

百度Apollo参编首批汽车信息安全国家标准,跻身车联网信息安全第一梯队

百度开发者中心

Apollo

行业白皮书发布!百度智慧城市助力城市“双碳”目标达成

百度开发者中心

人工智能 智慧城市

2021年10月云主机性能评测报告

博睿数据

四种 AI 技术方案,教你拥有自己的 Avatar 形象

阿里云视频云

人工智能 阿里云 计算机视觉 视频云 元宇宙

看完这篇SpringBoot让我在阿里成功涨薪40%,感谢

Java 编程 程序员 程序人生 springboot

GitHub远程免密连接详解,还顺手解决了RPC失败HTTP413

老表

GitHub RPC HTTP 11月日更

牛掰!“基础-中级-高级”Java程序员面试集结,看完献出我的膝盖

Java spring 程序员 JVM hashmap

科技热点周刊|ClickHouse 融资 2.5 亿美元、个人信息保护法正式实施、Facebook 改名 Meta

青云技术社区

云计算 facebook 云原生

端开发技术——5个高效的Flutter开发工具

思想者杰克

前后端、多语言、跨云部署,全链路追踪到底有多难?

阿里巴巴中间件

阿里云 云原生 中间件 全链路追踪

Github上线仅六天,收获Star超55K+,这套笔记能拿下90%以上面试

Java redis spring 程序员 架构

百度智能云人脸采集SDK通过CFCA权威安全测评

百度开发者中心

安全 sdk

架构实战营-总结

哈希

【高并发】开篇:线程与多线程

冰河

Java 并发编程 多线程 高并发 异步编程

科大讯飞联袂伯俊科技进军3C零售,构建发展新格局

科技热闻

百度鸿鹄芯片落地首款量产车吉利博越X 智能车机体验惊艳成都车展

百度开发者中心

百度 车联网 鸿鹄芯片

万字长文解密数据异构最佳实践(含完整代码实现)!!

冰河

MySQL 数据库 canal 数据同步 数据异构

TDengine在浙商银行微服务监控中的实践

TDengine

tdengine 后端 时序数据库

极客时间【架构实战营】第二期 模块七作业

Geek_91606e

架构实战营

操作系统——计算机硬件简介

思想者杰克

你需要知道的 19 个 console 实用调试技巧

CRMEB

CSS JavaScript DOM console crmeb

ReplacingMergeTree:实现Clickhouse数据更新

华为云开发者联盟

数据 事务 Clickhouse 数据更新 OLAP数据库

Hexo个人博客快速部署到Gitee&Coding详细教程

老表

Hexo gitee CODING 博客配置 11月日更

百度智能云与雅量商业智能携手,加速零售行业智能化升级

百度开发者中心

百度智能云 零售行业

阿里云视频云,用技术普惠打造平民化“虚拟人”

阿里云视频云

人工智能 阿里云 视频云 数字人 虚拟人

RadonDB ClickHouse on K8s 2.1.0 发布!

RadonDB

数据库 Kubernetes Clickhouse RadonDB

linux lsquic 编译

webrtc developer

常用的Nmap脚本及使用实例

喀拉峻

网络安全 信息安全 渗透测试 脚本 nmap

恒源云(GPUSHARE)_CAN: 借助数据分布提升分类性能

恒源云

深度学习

顶会VLDB‘22论文解读:CAE-ENSEMBLE算法

华为云开发者联盟

算法 时间序列 华为云数据库 深度神经网络

接口文档工具yapi的安装

小鲍侃java

11月日更

  • 扫码加入 InfoQ 开发者交流群
TypeScript 2.2添加了新的对象类型,更好的混入(Mixin)支持和更多新特性_JavaScript_Sergio De Simone_InfoQ精选文章