草庐IT

联合体与枚举

全部标签

javascript - typescript 推断函数参数联合

我目前有一个带有重载函数的接口(interface),如下所示:exportinterfaceIEvents{method():boolean;on(name:'eventName1',listener:(obj:SomeType)=>void):void;on(name:'eventName2',listener:(obj:SomeType)=>void):void;on(name:'eventName3',listener:(obj:SomeType)=>void):void;on(name:'eventName4',listener:(obj:SomeType)=>void):v

javascript - 可以使用流迭代两个联合数组

我有一个函数foo接受两个数组的并集,它唯一做的就是遍历数组,但是我得到了流类型错误,一些属性在大批。不可能这样做吗?我根本没有使用任何属性。它们都是数组,所以流应该知道它们是可迭代的。AliveexampleinthefloweditortypeHandle={|+articleId:string,+type:'handle',+accessories:Array,+positionInfo:string,|};typeLeg={|+articleId:string,+type:'leg',|};typeEntity=Handle|Leg;functionfoo(entities:A

javascript - 如何使用枚举值作为数组的索引

我尝试使用枚举值作为数组的索引,但它给我一个错误。exportclassColor{staticRED=0;staticBLUE=1;staticGREEN=2;}letx=['warning','info','success'];letanotherVariable=x[Color.RED];我尝试将Number()和parseInt转换为数字,但它不起作用。有什么方法可以将枚举值用作索引吗? 最佳答案 为了创建一个枚举,我们创建了一个常量卡住对象。对于差异和原因,请参阅以下引用:constappliestobindings("v

javascript - 比较 Flow 中的枚举值

我正在使用flow在我的代码中注释类型。typeBar='One'|'Two';functionfoo(b:Bar):boolean{returnb==='Three';}有什么方法可以教flow报告与不匹配类型(在我的例子中是string)比较的警告或错误?hereistheexamplefortest编辑:所以似乎不可能用枚举来完成。但是,由于这实际上是我遇到的一个错误,所以我想表达这一点,以便流程可以帮助我标记这种情况。有什么想法吗? 最佳答案 您可以使用格式(value:Type)。在你的情况下是:typeBar='One'

javascript - TypeScript 可更新和枚举引用

我有一个用JavaScript编写的外部SDK,我正在使用它。这些模块之一,Blob是可更新的,但也公开了一个枚举FooEnum(成员Bar和Baz).在JavaScript中使用此SDK的代码如下:constblobInstance=newSdk.Blob();constfooType=Sdk.Blob.FooEnum.Baz;我现在正在尝试编写一个接口(interface),我可以将此SDK转换到该接口(interface),以提供一些类型安全性。这是我到目前为止所得到的:interfaceBlobInterface{}enumFoo{Bar,Baz}interfaceSdk{Bl

javascript - 为什么 TypeScript 转译器将枚举编译成字典查找而不是简单的对象?

我很好奇为什么TypeScript转译器将枚举编译成字典查找而不是简单的对象。这是一个TypeScript枚举示例:enumtransactionTypesEnum{None=0,OSI=4,RSP=5,VSP=6,SDIV=7,CDIV=8}这是TypeScript发出的JS代码:varTransactionTypes;(function(TransactionTypes){TransactionTypes[TransactionTypes["None"]=0]="None";TransactionTypes[TransactionTypes["OSI"]=4]="OSI";Tran

javascript - 类型化数组和联合类型

我经常使用类型化数组,我的很多函数确实应该能够使用任何类型的类型化数组(例如,求和Uint8Array或Float32Array).有时,我可以只使用一个简单的类型联合,但我经常会遇到同样的错误。一个简单的例子:typeT1=Uint8Array;typeT2=Int8Array;typeT3=Uint8Array|Int8Array;//Noproblemshere:constf1=(arr:T1)=>arr.reduce((sum,value)=>sum+value);constf2=(arr:T2)=>arr.reduce((sum,value)=>sum+value);//Do

javascript - 您可以使属性在 javascript 中可枚举但不可迭代吗?

我只是想知道是否有一种方法可以使对象属性像在forin循环中一样可枚举,但不会出现在forof循环中,有点像Object.defineProperty({},'prop',{enumerable:true,iterable:false}如果没有,是否有计划实现这样的功能?或者forof循环是否使用可枚举属性 最佳答案 我在Mozilla开发网络(MDN)上进行了一些挖掘。原来对象有一个obj.propertyIsEnumerable(prop)检查属性是否可枚举的方法。从MDN中给出的示例来看,通过原型(prototype)链继承的

Javascript 联合对联合查找

我致力于寻找工会。我想根据其中一个索引是否与另一对的索引共享一个数字来对数字对进行分组。所以:我有一组这样的对:pairs:[[1,3],[6,8],[3,8],[2,7]]将它们组合成这样的并集的最佳方式是什么:[[1,3,8,6],[2,7]]([1,3]和[3,8]在一起是因为它们共享3。该组与[6,8]联合是因为它们共享8。在javascript中执行此操作的最佳方法是什么?以下是其他示例:pairs:[[8,5],[10,8],[4,18],[20,12],[5,2],[17,2],[13,25],[29,12],[22,2],[17,11]]into[[8,5,10,2,1

javascript - 在 ES2015 中枚举通配符导入

所以,在ES2015中你可以://ModuleAexportconstFOO=0;exportconstBAR=1;//ModuleBimport*asAExportsfrom'ModuleA';console.log(AExports.FOO);//Prints0在运行时枚举ModuleA导出的官方方法是什么?import*asAExportsfrom'ModuleA';//Arethesevaluesguaranteedtobesomething?Object.keys(AExports);//Ifso,shouldIlookatenumerablevalues?[...AExpo