写点什么

TypeScript 1.6 发布:完全支持 React/JSX

  • 2015-09-28
  • 本文字数:1596 字

    阅读完需:约 5 分钟

2012 年,微软推出了一个能够在 Node.js 上运行的开源语言——TypeScript。作为 JavaScript 的超集,TypeScript 在兼容 JavaScript 的同时,额外添加了可选的静态类型和基于类的面向对象编程,并且可用于大规模 JavaScript 应用的开发。TypeScript 一经推出便受到了广泛关注,也逐渐被很多用户所接受。微软公司也听取广大用户的反馈,不断更新 TypeScript。近日,微软再次更新 TypeScript,推出了 1.6 版本。该版本添加了对 React/JSX、类表达式以及很多新功能的支持。

首先,微软的 TypeScript 团队充分听取了来自 React 专家和团队的反馈意见。因此,新版本的 TypeScript 完全支持 React 和 JSX。MSDN 给出了一个 tsx 类型的文档作为示例。该文档中的代码如下所示。

复制代码
class MyClass extends React.Component{
render() { <p>Hello, {this.props.who}</p>; }
props: {
who?: string;
} }
var x = <myclass who="hello"></myclass>;

该例子中 TypeScript 代码和 JSX 语法完美共存,使得 React 开发人员可以方便的使用 TypeScript 语言。这样,用户在使用 VS、VS Code 或者 Sublime 的时候,就可以进行 React 和 JSX 的开发。

此外,新版本 TypeScript 添加了对类表达式的支持。如下例所示,该特性使得开发人员可以在使用表达式的时候再根据需求进行类的定义。

复制代码
class StateHandler extends class { reset() { return true; } } {
constructor() {
super();
}
}
var g = new StateHandler();
g.reset();

在之前的版本中,开发人员可以使用 if 语句来缩小变量的类型。新版本的 TypeScript 考虑到广大用户的需求,直接增加了用户自定义守护函数的支持。

复制代码
interface Animal {name: string; }
interface Cat extends Animal { meow(); }
function isCat(a: Animal): a is Cat {
return a.name === 'kitty';
}
var x: Animal;
if(isCat(x)) {
x.meow(); // OK, x is Cat in this block
}

守护函数采用“a is X”作为标志,根据用户定义来返回布尔值或其他值。该特性不仅允许typeofinstanceof检查,而且允许接口和定制化的分析。

为了更好的支持不同类型之间的混合以及扩展现有的类,TypeScript 1.6 版本还添加了新的类型操作符‘&’。该操作符最大的亮点在于对泛型的支持。

复制代码
function extend<t u="">(first: T, second: U): T & U {
let result = <t u=""> {};
for (let id in first) {
result[id] = first[id];
}
for (let id in second) {
if (!result.hasOwnProperty(id)) {
result[id] = second[id];
}
}
return result;
}
var x = extend({ a: "hello" }, { b: 42 });
x.a; // works
x.b; // works </t></t>

之前,很多用户已经希望 TypeScript 能够支持抽象类。现在,新的版本终于添加了对抽象类的支持。

复制代码
abstract class A {
foo(): number { return this.bar(); }
abstract bar(): number;
}
var a = new A(); // error, Cannot create an instance of the abstract class 'A'
class B extends A {
bar() { return 1; }
}
var b = new b(); // success, all abstracts are defined

类别名也是之前版本的 TypeScript 已经支持的功能。但是,之前的类别名被严格限制了使用范围——只能用于确定的类。新版本 TypeScript 扩展了该功能,开始支持了泛型别名。

复制代码
type switcharoo<t u=""> = (u: U, t:T)=>T;
var f: switcharoo<number string="">;
f("bob", 4);</number></t>

最后,1.6 版本的 TypeScript 还在 object literal 以及模块解析方面进行了改进。目前,用户已经可以通过官方网站下载用于 Visual Studio 2015 、Visual Studio 2013 的安装文件。而且,用户也可以通过 npm 或者 GitHub 进行下载。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者)。

2015-09-28 19:006785
用户头像

发布了 268 篇内容, 共 122.8 次阅读, 收获喜欢 24 次。

关注

评论

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

基于Java+SpringBoot+vue前后端分离工程教育认证的计算机课程管理平台设计实现

hunter_coder

后端开发

基于Java+SpringBoot+vue前后端分离甘肃非物质文化网站设计实现

hunter_coder

后端开发

语言模型检索用的知识库,是越大越好吗?

算AI

人工智能 自然语言处理 nlp 知识库 大语言模型

蓝易云 - dockerfile基于apline将JDK20打包成镜像

百度搜索:蓝易云

Docker 云计算 运维 服务器 高防服务器

开源Bug管理工具深度评测,分享10款

爱吃小舅的鱼

开源 bug管理

基于Java+SpringBoot+Vue前后端分离高校专业实习管理系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+vue前后端分离服装销售平台设计实现

hunter_coder

后端开发

基于Java+SpringBoot+vue前后端分离高校办公室行政事务管理系统设计实现

hunter_coder

后端开发

基于Java+SpringBoot+vue前后端分离高校心理教育辅导设计实现

hunter_coder

后端开发

Claris FileMaker Pro for mac(数据库软件) v21.0.1版

Mac相关知识分享

Topaz Photo AI for Mac(人工智能降噪软件) v3.1.2激活版

Mac相关知识分享

FastScripts for Mac(脚本调用工具)v3.3.3激活版

Mac相关知识分享

基于Java+SpringBoot+Vue前后端分离高校体育运动会管理系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+Vue前后端分离高校学生评教系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+Vue前后端分离高校电子名片系统设计和实现

hunter_coder

后端开发

蓝易云 - JavaScript判断数组是否包含某个值的6种方法

百度搜索:蓝易云

JavaScript 云计算 运维 云服务器 高防服务器

蓝易云 - MyBatis关联关系映射详解

百度搜索:蓝易云

运维 mybatis JDBC 云服务器 香港服务器

蓝易云 - 2023年入坑跨境电商需要多少钱呢?

百度搜索:蓝易云

云计算 运维 云服务器 香港服务器 高防服务器

Perfectly Clear Workbench for Mac(智能图像清晰修复软件) v4.6.1.2

Mac相关知识分享

KORG Software ARP 2600 for mac(半模块化模拟合成器)v1.0.2激活版

Mac相关知识分享

AlDente Pro for Mac(电池最大充电限制软件) v1.27.3激活版

Mac相关知识分享

基于Java+SpringBoot+Vue前后端分离高校教师科研管理系统设计和实现

hunter_coder

后端开发

交付的不是代码,而是价值

墨卷架构

技术成长 程序员‘ 代码编写

硅纪元视角 | 国产AR眼镜Rokid AR Lite 12小时销量破万,CEO直播带货引爆市场

硅纪元

Linux环境下运行介绍

梦笔生花

Linux 系统 程序

【王国保卫战5:联盟】安卓/ios/pc单机游戏,无限钻

你的猪会飞吗

经典的GBA游戏iOS版资源 单机游戏

TypeScript 1.6发布:完全支持React/JSX_JavaScript_张天雷_InfoQ精选文章