BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Sergio De Simone 关注 12 他的粉丝 ,译者 罗远航 关注 1 他的粉丝 发布于 2017年2月16日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

计划在二月里发布的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(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) {
... }
}

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)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT