草庐IT

TypeScript(5)类、继承、多态

全部标签

javascript - Normalizr:通过类型而不是多态映射的模式来识别实体

对于多态模式,例如Union在Normalizr中,对于模式定义和数据:constdata={owner:{id:1,type:'user',name:'Anne'}};constuser=newschema.Entity('users');constgroup=newschema.Entity('groups');constunionSchema=newschema.Union({user:user,group:group},'type');constnormalizedData=normalize(data,{owner:unionSchema});标准化数据采用以下形式:{ent

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 - 为什么要为 Javascript 库在绝对类型上发布 TypeScript 声明文件?

我在npm上发布了两个Javascript库,用户要求为它们提供TypeScript类型定义。我自己不使用TypeScript,也没有计划在TypeScript中重写这些库,但如果只是为了更好的IntelliSense代码完成,我仍然想添加类型定义文件。我正在寻找与此有关的一些建议。我开始阅读DefinitelyTypedproject的文档以及publishingadeclarationfileforannpmpackage上的文档.两个消息来源都表示“在npm上发布到@types组织”是非用TypeScript编写的项目的首选方法。为什么比通过types与库本身一起发布类型定义更受

使用原型(prototype)时的 Javascript 继承问题 - 实例被覆盖 :(

我是JavaScript编程的新手,我对继承有点噩梦。我正在为AppceleratorTitanium编写一些代码,我有一个名为Slide2D的基类,我希望从中继承它。所以我在Slide2D的原型(prototype)中放置了一些函数。这些通常不会被覆盖,但会从Slide2D派生的类中调用。这些函数也将从程序的其他部分调用。还有各种事件处理程序用于管理Titanium中的动画。如果我在一些调用代码中制作了几个这样的幻灯片(使用new)vars=newSlide2D('slide1','background1.png',etc......vart=newSlide2D('slide2',

javascript - 基于原型(prototype)继承在实际项目中的应用

基于类的继承展示了它在创建大型编程系统(尤其是GUI系统)中的有用性。如何在现实生活中应用基于原型(prototype)的继承?我们应该如何构建系统而不是创建类层次结构?对于基于类的OOP,是否存在任何基于真正原型(prototype)的OOP的编程模式? 最佳答案 nahab:ArehereexistanyprogrammingpatternsforrealprototypicalbasedOOPasexistsforclass-basedOOP?这question应该会指导您找到一些关于实用Javascript设计模式的好资源。

Javascript 继承和对象字面量

在JavaScript中,据说对象字面量具有原型(prototype)链接,但是函数对象同时具有原型(prototype)链接和原型(prototype)属性。那么,基于以上所述,是否可以说继承(使用原型(prototype)属性)仅适用于函数对象(构造函数版本)而不适用于对象字面量?此外,要补充的是,__proto__属性在所有浏览器中都无法访问... 最佳答案 精简版:是的:不能通过分配给对象的prototype属性来设置或修改原型(prototype)链。您不能通过使用对象字面量创建对象然后为其提供名为prototype的属性

javascript - typescript 覆盖构造函数中的扩展属性

我在使用Typescript时遇到问题,我扩展了一个类并从父类(superclass)覆盖了一个属性,但是当我实例化子类时,父类(superclass)属性仍然在构造函数中读取。请看下面的例子:classPerson{publictype:string='GenericPerson';publicconstructor(){console.log(this.type);}}classClownextendsPerson{publictype:string='ScaryClown';}varperson=newPerson(),//'GenericPerson'clown=newClow

javascript - 测试未导出的 TypeScript 函数

我使用Mocha/Chai测试JavaScript前端代码,现在我们切换到TypeScript。我有几个要测试的功能。但它们不应该是可导出的。我可以在不向它们添加export的情况下访问此函数并对其进行测试吗? 最佳答案 无法访问未导出的模块函数。moduleMyModule{functionprivateFunction(){alert("privateFunction");}}MyModule.privateFunction();//Generatesacompilererror但是,撇开私有(private)​​方法测试的有效

javascript - 如何在 Angular 2 typescript 应用程序中使用 (mqtt) js 库?

我与how-to-use-moment-js-library-in-angular-2-typescript-app中采用的方法非常相似但仍然得到errorTS2307:Cannotfindmodule'mqtt'.npminstall--savemqtttypingsinstall--savemqtt没有找到打字但是这个找到了...typingsinstallmqtt--save--ambient我的tsconfig.conf看起来像这样{"compilerOptions":{"noImplicitAny":true,"module":"commonjs","target":"ES5

javascript - lodash flow 函数在 typescript 中应该怎么写?

lodash.flow结合了两个或多个功能。lodash.flow(double,addTwo)将返回一个函数,该函数将加倍并添加两个。这个函数应该如何在typescript中输入(当前定义只是返回Function)?declarefunctionflow(f1:(a1:In)=>Intermediate,f2:(a1:Intermediate)=>Out):(a1:In)=>Out适用于两个函数,第一个函数有一个输入参数。我不确定如何扩展定义以适用于所有情况。如果这样调用,我的尝试可以支持多个函数:lodash.flow(f1,lodash.flow(f2,f3))但我正在寻找lod