【发布时间】:2016-06-05 10:19:21
【问题描述】:
我能够为 Array#includes 找到一个 polyfill(堆栈溢出)并将其添加到打字稿中,但是在向我的文件添加一个小导入后它变成了一个模块(我理解他们为什么这样做是为了导出,但为什么导入时),我无法再修改全局命名空间。
如何修复 polyfill?
interface Array<T> {
includes(searchElement: T) : boolean;
}
// Add Array includes polyfill if needed
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Polyfill
if (!Array.prototype.includes) {
Array.prototype.includes = function(searchElement /*, fromIndex*/ ) {
'use strict';
var O = Object(this);
var len = parseInt(O.length, 10) || 0;
if (len === 0) {
return false;
}
var n = parseInt(arguments[1], 10) || 0;
var k;
if (n >= 0) {
k = n;
} else {
k = len + n;
if (k < 0) {k = 0;}
}
var currentElement;
while (k < len) {
currentElement = O[k];
if (searchElement === currentElement) { // NaN !== NaN
return true;
}
k++;
}
return false;
};
}
【问题讨论】:
标签: typescript polyfills shim