草庐IT

TypeScript(5)类、继承、多态

全部标签

javascript - 创建可在浏览器和 nodejs 中使用的 typescript 库

我想创建一个可以在浏览器和nodejs中使用的库。为了争论起见,假设这是我的图书馆:exportdefaultclassMyClass{publicgetString():string{return"Message";}}目前浏览器不支持ES2015模块,我不想在浏览器中依赖requirejs或任何其他模块加载器-我希望仅通过使用包含生成的.js文件来使用这个库脚本标签。感觉用内部模块就可以实现我想要的东西(不想污染全局命名空间)。但是,当我将代码包装在namespace/module中时,我很难将其编译为commonjs模块。实现我想要的目标的正确方法是什么?或者,可能是,作为一个t

javascript - 我应该如何使用 typescript 中的 "pdf"包

我已经安装了pdf,包括使用的类型npminstall--savepdf@types/pdf不幸的是,我找不到任何关于如何使用它的文档。如果我这样做:import{PDFJS}from'pdf';PDFJS.getDocument(fileName)我得到:TyeError:Cannotread'getDocument'ofundefined那么我该如何初始化呢? 最佳答案 更新:自从写下这个答案后,类型定义已重命名以匹配NPM包,并添加了适当的导出定义,因此您可以忽略以下所有内容,只需npminstall--save-dev@类型

javascript - typescript 字符串到 bool 值

我正在尝试将字符串转换为bool值。有几种方法可以做到一种方法是letinput="true";letboolVar=(input==='true');这里的问题是我必须验证输入是真还是假。有没有更优雅的方式,而不是首先验证输入然后进行转换?在.NET中,我们有bool.TryParse如果字符串无效则返回false。typescript中是否有任何等价物? 最佳答案 你可以做这样的事情,你可以有三个状态。undefined表示该字符串不可解析为bool值:functionconvertToBoolean(input:string)

javascript - babel 装饰器和 TypeScript 的一样吗?

我经常使用TypeScript编写代码,但很少使用babel,我知道TypeScript如何在装饰器上工作,而babel也支持装饰器,它们的行为是否相同? 最佳答案 是的,它们是相同的,从某种意义上说它们产生相同的行为,但它们有不同的实现。两者都遵循ECMAScript规范并尽早为我们带来功能。您可以预期它们两者上的内容将来可能会受到节点或浏览器的支持。代码:functionf(){console.log("f():evaluated");returnfunction(target,propertyKey,descriptor){c

javascript - React JS/Typescript 中的空合并运算符

这个问题在这里已经有了答案:Safenavigationoperator(?.)or(!.)andnullpropertypaths(7个答案)ReplacementofElvisOperatorofAngular2inTypescript(3个答案)关闭4年前。我们在.NET中有Null合并运算符,我们可以按如下方式使用stringpostal_code=address?.postal_code;我们可以在ReactJS中做同样的事情吗?我发现我们可以用&&运算符做什么在address.ts文件中stringpostal_code=address&&address.postal_co

javascript - 使用 Douglas Crockford 的函数继承在 Javascript 中调用基方法

基本上我如何使用下面的这种模式调用基本方法?varGS={};GS.baseClass=function(somedata){varthat={};that.data=somedata;//Baseclassmethodthat.someMethod=function(somedata){alert(somedata);};returnthat;};GS.derivedClass=function(somedata){varthat=GS.baseClass(somedata);//Overwritingbasemethodthat.someMethod=function(someda

javascript - JavaScript 原型(prototype)链中的方法继承

"在javascript中,每个对象都有一个到创建它的对象的secret链接,形成一个链。当一个对象被要求提供一个它没有的属性时,它的父对象被询问......不断在链中向上,直到找到该属性或直到到达根对象。"总而言之,我一直认为上面的话是真的,所以我做了一些测试来验证它,我打算像下面这样定义对象的关系。请查看。代码应该如下所示。//Shape-superclassfunctionShape(){this.x=0;this.y=0;};Shape.prototype.move=function(x,y){this.x+=x;this.y+=y;alert('Shapemove');};/

javascript - React 和 ES6 继承

注意:这篇文章是在React不支持ES6(v12)时发布的。我有一个ES6类:classBaseClass{getInitialState(){return{message:'Hello!'};}render(){return({this.state.message})}}我可以使用这个表达式在ES6中导出(来源:reactES6browserify)exportdefaultReact.createClass(BaseClass.prototype)这很好用。现在我想使用ES6继承来扩展我的BaseClass类:classExtendedClassextendsBaseClass{g

javascript - 从 typescript 使用 Facebook SDK

在我的网络应用程序中,我正在使用Typescript并想使用FBsdk函数示例:来自Typescript的api、login等。在编译使用FB.init()的typescript代码时,出现以下错误:Suppliedparametersdonotmatchanysignatureofcalltarget.Cannotfindname'FB'. 最佳答案 您可以使用现有的类型定义:https://github.com/borisyankov/DefinitelyTyped/blob/master/fbsdk/fbsdk.d.ts有关使

javascript - 多态性nodeJS

我用nodeJS开发了一个restfulAPI。exports.postCreature=function(req,res){varcreature=newCreature({name:req.body.name,id_user:req.user._id});creature.save(function(err){if(err)res.status(400).send(Error.setError('impossibletosavetheyourcreature',err));elseres.status(201).send();});};//CODEDUPLICATEexports.