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);
答案 0 :(得分:0)
在Typescript
中何时包含String.includes或Number.isInteger等ES6方法
他们已经是。您可以将typescript@next
与--lib es6