草庐IT

javascript - 如何有选择地导入 ES2015 模块函数,但带有命名空间?

我开始使用Rollup和D3版本4,它是用ES2015模块编写的。我使用传统的D3命名空间“d3”编写了一些代码。现在我想使用Rollup创建一个自定义包。我想使用tree-shaking,因为我可能只使用了d3中大约一半的函数,而且我想尽可能地保持轻便。我很清楚我可以有选择地导入函数,例如:import{scaleLinear}from"d3-scale";import{event,select,selectAll}from"d3-selection";这很快就会变得非常冗长,因为d3的一半是很多函数。我可以忍受这一点。更大的问题是它还需要在没有namespace的情况下完全重写我所

javascript - TypeScript 是否具有 ES6 "Sets"的等效项

我想从一个对象数组中提取所有独特的属性,您可以在ES6中使用扩展运算符和Set非常干净地完成此操作所以:vararr=[{foo:1,bar:2},{foo:2,bar:3},{foo:3,bar:3}]constuniqueBars=[...newSet(arr.map(obj=>obj.bar))];>>[2,3]但是,在TypeScript1.8.31中,这给了我构建错误:Cannotfindname'Set'我知道我可以使用强制VS忽略它declarevarSet;但我希望TypeScript可以编译成非ES6的东西,这样它就可以在旧系统上使用。有谁知道我是否可以使用这样的功能

javascript - ES7 类 : Declaring Properties Outside of Constructor

在构造函数内部和外部声明变量有什么区别吗?对于函数,'this'的绑定(bind)不同,但对于变量,我不知道是否存在差异。classWidget{constructor(constructorName){this.constructorName=constructorName;}nonConstructorName="nonConstructorName1";}varmyWidget=newWidget("myConstructorName1");console.log(myWidget.constructorName);//"myConstructorName1"console.lo

javascript - ES6中for循环的作用范围是什么?

JavaScript中for循环中let的作用范围究竟是什么?for(leti=0;i外部console.log抛出错误:"UncaughtReferenceError:iisnotdefined"证明i在blockaction作用域中,但是,为什么for循环中定义的i没有抛出任何重复定义错误? 最佳答案 一个for的正文循环(带有let变量声明)有两个范围(或LexicalEnvironments):一个范围是迭代环境,它包含用let声明的变量在for循环声明,内部作用域包含在for循环体内声明的变量(在{之后)。这在规范中有描述

javascript - 和谐集合的用户定义对象相等性 (es6)

我遇到了一个问题,我生成了很多值并且需要确保我只处理唯一的值。由于我使用的是带有--harmony标志的节点js,并且可以访问和声集合,因此我决定Set可能是一个选项。我正在寻找的是类似于以下示例的内容:'usestrict';functionPiece(x,y){this.x=xthis.y=y}functionBoard(width,height,pieces){this.width=widththis.height=heightthis.pieces=pieces}functiongeneratePieces(){return[newPiece(0,0),newPiece(1,1

javascript - Typescript 将 es6 .js 依赖转译为 es5

我的项目中有一个假设的Typescript文件(简化示例)。Utils.ts:import*asHelperFromNodeModulesfrom'helper-from-node-modules';classUtils{staticfoo(){returnHelperFromNodeModules.parse(...);}}导入helper-from-node-modules包含一个Javascript文件。helper-from-node-modules.js:constdep=require('foo');functionparse(...){returnbar.map((e)=

javascript - 使用 ES6 类继承链的 instanceof 不起作用

使用ES6class语法,我想知道当有多个继承链时,为什么instanceof运算符对继承链不起作用?(optionalread)Howinstanceofoperatorworks?InobjinstanceofConstructor,theinstanceofoperatorchecksifthe'prototype'propertyoftheConstructorfunctionispresentintheprototypechainoftheobj.Ifitispresent,returntrue.Otherwise,false.在下面的代码片段中,BTError继承自Erro

javascript - 使用 ES5 的 AOT(提前)编译

是否可以仅使用ES5在Angular中进行AOT编译?更重要的是,我可以使用NGToolsWebpackplugin吗?用ES5?我知道TypeScript是Angular的首选语言,但是我的工作单位不允许在我们的Angular项目中使用TypeScript。我的双手有点束缚,我不希望客户端的性能因此受到影响。关于我的项目的一些相关信息:用于构建/打包的Webpack2用ES2015编写,使用Babel转译为ES5我已经找遍了,但未能找到明确的答案,如果有人能提供任何信息,我将不胜感激。提前致谢! 最佳答案 在你的tsconfig.

javascript - ES6 循环依赖

这是我经常遇到的问题,我希望找到正确的处理方法。所以我有这样的设置:parent.js:exportdefault{x:1}a.js:importparentfrom'parent.js'exportdefaultparent.extend(a,{title:'a'})b.js:importparentfrom'parent.js'exportdefaultparent.extend(b,{title:'b'})太好了,现在我有了一些child。但我决定我希望在parent.js中有一个函数来检查对象是否是a或b的实例。所以我可能会这样做:parent.js:importafrom'a

javascript - 为什么递归生成器函数在 ES2015 中不起作用?

我试图理解ES2015中的生成器,并用它创建了一个递归阶乘函数。但它不起作用。我已经提到了已经存在的问题,例如this关于这个话题,但没有帮助。function*fact(n){if(n谁能找到我在这里遗漏的任何明显问题?我在带有JavaScript-1.7的JSFiddle中使用它here 最佳答案 CananyonefindanyobviousissuesIammissinghere?fact返回一个迭代器,但您正试图将它与一个数字相乘:n*fact(n-1)。那行不通!因为fact返回一个迭代器,但您还想将迭代器的最后一个值与