前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TypeScript 1.6发布:完全支持React/JSX

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

作者头像
逸鹏
发布2018-04-09 11:34:03
6320
发布2018-04-09 11:34:03
举报
文章被收录于专栏:逸鹏说道

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

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

代码语言:javascript
复制
class MyClass extends React.Component{
    render() {Hello, {this.props.who}; }
    props: {
        who?: string;
    } }

var x =;

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

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

代码语言:javascript
复制
class StateHandler extends class { reset() { return true; } } {
   constructor() {
     super();
   }
}

var g = new StateHandler();
g.reset();

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

代码语言:javascript
复制
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版本还添加了新的类型操作符‘&’。该操作符最大的亮点在于对泛型的支持。

代码语言:javascript
复制
function extend(first: T, second: U): T & U {
  let result ={};
  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

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

代码语言:javascript
复制
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扩展了该功能,开始支持了泛型别名。

代码语言:javascript
复制
type switcharoo= (u: U, t:T)=>T;
var f: switcharoo;
f("bob", 4);

TypeScript 1.6 正式发布, 此版本支持 React/JSX,类表达式和为类型系统增加一系列丰富的功能,还提供了更严格的对象常量检测。TypeScript 1.6 现已提供在 Visual Studio 2015,Visual Studio 2013,npm 和源代码页面。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我为Net狂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档