什么时候会在Typescript中包含像String.includes或Number.isInteger这样的ES6方法?

时间:2016-06-14 19:57:07

标签: typescript ecmascript-6 transpiler

typescriptlang.org主页上列出的Typescript的主要好处之一是能够编写“最先进的Javascript”,可以编译到任何ES3或更新的目标。我可以在Typescript中使用许多ES6函数,包括project.repositories.each { println "Name: " + it.name + "; url: " + it.url } let,箭头函数,解构,模板文字等等。

我试图理解为什么在Typescript中没有某些ES6功能。是否有路线图指定何时将某些ES6功能添加到Typescript,或解释为什么它们可能不会?

例如,尝试在Typescript中使用String.includes会导致错误,并且不会在不支持该方法的浏览器中转换生成的javascript并失败。

Opera的转换版本(目标设置为tsconfig.json中的ES5)在Opera中失败:

const

我可以添加自己的polyfill,它可以工作:

let homer = "homer simpson";

if(homer.includes("homer")) {
    alert("Yes! We have a homer!");
}

在Typescript中实现的ES6功能的一些示例

模板文字

// Polyfill for .includes 
// Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes

if (!String.prototype.includes) {
  String.prototype.includes = function(search, start) {
    'use strict';
    if (typeof start !== 'number') {
      start = 0;
    }

    if (start + search.length > this.length) {
      return false;
    } else {
      return this.indexOf(search, start) !== -1;
    }
  };
}

let homer = "homer simpson";

if(homer.includes("homer")) {
    alert("Yes! We have a homer!");
}

转化为

let myDiv = `
    <div>
        <h2>I am part of a template literal.</h2>
    </div>
`

解构

var myDiv = "\n    <div>\n        <h2>I am part of a template literal.</h2>\n    </div>\n";

转化为

let [a,b] = [1,2,3];

箭头功能

var _a = [1, 2, 3], a = _a[0], b = _a[1];

转化为

const arrsq = [1,2,3];
const squares = arrsq.map(x => x*x);

1 个答案:

答案 0 :(得分:0)

  

在Typescript

中何时包含String.includes或Number.isInteger等ES6方法

他们已经是。您可以将typescript@next--lib es6

一起使用