CN112445468A - Typescript类型文件生成方法、装置、设备及计算机可读存储介质 - Google Patents
Typescript类型文件生成方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112445468A CN112445468A CN202011487255.7A CN202011487255A CN112445468A CN 112445468 A CN112445468 A CN 112445468A CN 202011487255 A CN202011487255 A CN 202011487255A CN 112445468 A CN112445468 A CN 112445468A
- Authority
- CN
- China
- Prior art keywords
- type
- typescript
- type information
- code
- acquiring
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000006870 function Effects 0.000 claims description 67
- 238000004891 communication Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 9
- 238000013459 approach Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例涉及计算机技术领域,公开了一种Typescript类型文件生成方法、装置、设备及计算机可读存储介质。该方法包括:获取Javascript文件代码,并生成Javascript文件代码的AST树;遍历Javascript文件代码的AST树;若遍历到函数,则获取函数的参数和返回值,获取参数的类型信息和返回值的类型信息;若遍历到对象,则获取对象的属性,获取属性的类型信息;根据参数的类型信息、返回值的类型信息、属性的类型信息和Javascript文件代码的AST树生成Typescript类型的AST树;将Typescript类型的AST树转换成Typescript类型的代码,根据Typescript类型的代码生成Typescript类型文件,其中,Typescript类型文件的内容为所述Typescript类型的代码。通过上述方式,本发明实施例可以实现Javascript文件与Typescript文件的协同使用。
Description
技术领域
本发明实施例涉及计算机技术领域,具体涉及一种Typescript类型文件生成方法、装置、设备及计算机可读存储介质。
背景技术
Javascript是一种脚本语言,主要应用于浏览器的运行中。由于Javascript语言缺少类型系统,因此编程人员一般通过Jsdoc注释对编写的Javascript代码进行解释说明。
为了解决Javascript语言缺少类型系统的局限,微软推出了Javascript语言的超集,即Typescript语言。与Javascript语言相比,Typescript语言具有类型系统可以与IDE(Integrated Development Environment,集成开发环境)配合进行代码提示。在进行软件开发时,由于一些新文件由Typescript语言编写,需要调用的库文件由Javascript语言编写,因此在实际应用中会涉及到Typescirpt文件需要调用Javascript文件。然而,发明人在实现本发明实施例的过程中发现:在Typescript文件需要调用Javascript文件时,由于Javascript程序语言缺少类型系统,使得Javascript文件与Typescript文件无法协同使用。
发明内容
鉴于上述问题,本发明实施例提供了一种Typescript类型文件生成方法、装置、设备及计算机可读存储介质,用于解决现有技术中存在的Javascript文件无法与Typescript文件协同使用的问题。
根据本发明实施例的一个方面,提供了一种Typescript类型文件生成方法,所述方法包括:
获取Javascript文件代码,并生成所述Javascript文件代码的AST树;
遍历所述Javascript文件代码的AST树;
若遍历到函数,则获取所述函数的参数和返回值,获取所述参数的类型信息和所述返回值的类型信息;
若遍历到对象,则获取所述对象的属性,获取所述属性的类型信息;
根据所述参数的类型信息、所述返回值的类型信息、所述属性的类型信息和所述Javascript文件代码的AST树生成Typescript类型的AST树;
将所述Typescript类型的AST树转换成Typescript类型的代码,根据所述Typescript类型的代码生成所述Typescript类型文件,其中,所述Typescript类型文件的内容为所述Typescript类型的代码。
在一种可选的方式中,所述获取所述参数的类型信息和所述返回值的类型信息包括:
根据所述Javascript文件代码的AST树获取所述函数的Jsdoc注释;
在所述函数的Jsdoc注释中,分别获取所述参数的类型信息和所述返回值的类型信息。
在一种可选的方式中,所述在所述函数的Jsdoc注释中,分别获取所述参数的类型信息和所述返回值的类型信息进一步包括:
获取与所述函数的参数关联的第一正则表达式;
获取与所述函数的返回值关联的第二正则表达式;
根据所述第一正则表达式,在所述函数的Jsdoc注释中查找出所述参数的类型信息;
根据所述第二正则表达式,在所述函数的Jsdoc注释中查找出所述返回值的类型信息。
在一种可选的方式中,所述获取所述属性的类型信息包括:
根据所述Javascript文件代码的AST树获取所述对象的Jsdoc注释;
在所述对象的Jsdoc注释中,获取所述属性的类型信息。
在一种可选的方式中,所述在所述对象的Jsdoc注释中,获取所述属性的类型信息包括:
获取与所述对象的属性关联的第三正则表达式;
根据所述第三正则表达式,在所述对象的Jsdoc注释中查找出所述属性的类型信息。
在一种可选的方式中,所述获取Javascript文件代码,并生成所述Javascript文件代码的AST树包括:
获取Javascript文件代码,使用babel工具对所述Javascript文件代码进行处理,以生成所述Javascript文件代码的AST树。
在一种可选的方式中,所述将所述Typescript类型的AST树转换成Typescipt类型的代码包括:
使用babel工具对所述Typescript类型的AST树进行处理,以生成Typescript类型的代码。
根据本发明实施例的另一方面,提供了一种Javascript声明文件生成装置,所述装置包括:
第一生成模块,用于获取Javascript文件代码,并生成所述Javascript文件代码的AST树;
遍历模块,用于遍历所述Javascript文件代码的AST树;
第一获取模块,用于若遍历到函数,则获取所述函数的参数和返回值,获取所述参数的类型信息和所述返回值的类型信息;
第二获取模块,用于若遍历到对象,则获取所述对象的属性,获取所述属性的类型信息;
第二生成模块,用于根据所述参数的类型信息、所述返回值的类型信息、所述属性的类型信息和所述Javascript文件代码的AST树生成Typescript类型的AST树;
第三生成模块,用于将所述Typescript类型的AST树转换成Typescript类型的代码,根据所述Typescript类型的代码生成所述Typescript类型文件,其中,所述Typescript类型文件的内容为所述Typescript类型的代码。
根据本发明实施例的另一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述的Typescript类型文件生成方法的操作。
根据本发明实施例的又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令在计算设备上运行时,使得计算设备执行上述的Typescript类型文件生成方法的操作。
本发明实施例中,通过遍历Javascript文件代码的AST树,若遍历到函数,则获取函数的参数和返回值,进一步获取参数的类型信息和返回值的类型信息;若遍历到对象,则获取对象的属性,进一步获取属性的类型信息;根据参数的类型信息、返回值的类型信息、属性的类型信息和Javascript文件代码的AST树可以生成Typescript类型的AST树;通过将Typescript类型的AST树转换成Typescript类型的代码,可以根据Typescript类型的代码生成Typescript类型文件,使得生成的Typescript类型文件可以包含详细的类型信息,可以用于Javascript文件与Typescript文件的配合使用。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
附图仅用于示出实施方式,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的Typescript类型文件生成方法的流程示意图;
图2示出了本发明实施例提供的Typescript类型文件生成装置的结构示意图;
图3示出了本发明实施例提供的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。
图1示出了本发明实施例Typescript类型文件生成方法的流程图,该方法由计算设备执行。计算设备的存储器中存放至少一可执行指令,所述可执行指令使计算设备的处理器执行Typescript类型文件生成方法的操作。
如图1所示,该方法包括以下步骤:
步骤110:获取Javascript文件代码,并生成所述Javascript文件代码的AST树。
其中,Javascript文件代码一般保存在Javascript文件中,可以通过读取Javascript文件的内容的方式来获取Javascript文件代码。获取Javascript文件代码后,可以根据Javascript文件代码生成Javascript文件代码的AST树。AST(Abstract SyntaxTree,抽象语法树)是以树状的形式来对源代码的语法结构进行表示的一种结构。通过AST树可以获知源代码的语法结构,因此生成Javascript文件代码的AST树后,可以根据Javascript文件代码的AST树获取Javascript文件代码的语法结构。
在一种可选的方式中,获取Javascript文件代码后,可以使用babel工具对Javascript文件代码进行处理,以生成Javascript文件代码的AST树。babel工具是一个JavaScript编译器,可以用于在Javascript文件代码与AST树之间进行转换。
步骤120:遍历所述Javascript文件代码的AST树。
其中,Javascript文件代码中包括函数和对象,通过遍历Javascript文件代码的AST树,可以获取Javascript文件代码中的全部函数和对象。
步骤130:若遍历到函数,则获取所述函数的参数和返回值,获取所述参数的类型信息和所述返回值的类型信息。
其中,若在Javascript文件代码的AST树中遍历到函数,则可以获取函数的参数和返回值,并且进一步获取参数的类型信息和返回值的类型信息。
在一种可选的方式中,若在Javascript文件代码的AST树中遍历到函数,则可以根据Javascript文件代码的AST树获取该函数的Jsdoc注释,在该函数的Jsdoc注释中,分别获取参数的类型信息和返回值的类型信息。Jsdoc是一个根据Javascript文件代码的注释信息生成JavaScript应用程序或库、模块的API文档的工具。Jsdoc已经在事实上形成了一种注释规范,即Jsdoc规范,符合Jsdoc规范的注释被称为Jsdoc注释。由于Javascript语言缺少类型系统,因此,编程人员一般会在Javascript文件代码中添加Jsdoc注释,并且在Jsdoc注释中添加类型信息。可以根据这一特点,在函数的Jsdoc注释中,分别获取参数的类型信息和返回值的类型信息。
在一种可选的方式中,若在Javascript文件代码的AST树中遍历到函数,则可以先获取该函数的参数和返回值,然后在该函数的Jsdoc注释中,分别查找参数的类型信息和返回值的类型信息。进一步的,可以根据函数的参数获取与该参数关联的第一正则表达式,通过与该参数关联的第一正则表达式在该函数的Jsdoc注释中查找出参数的类型信息;可以根据函数的返回值生成与该返回值关联的第二正则表达式,通过与该返回值关联的第二正则表达式在该函数的Jsdoc注释中查找出返回值的类型信息。正则表达式是一种用于字符串操作的表达式,可以用于对字符串进行查找、替换、删除等操作。例如,Javascript中的test()方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回true,否则返回false;search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置;replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
步骤140:若遍历到对象,则获取所述对象的属性,获取所述属性的类型信息。
其中,若在Javascript文件代码的AST树中遍历到对象,则可以获取对象的属性,并且进一步获取属性的类型信息。
在一种可选的方式中,若在Javascript文件代码的AST树中遍历到对象,则可以根据Javascript文件代码的AST树获取该对象的Jsdoc注释,在该对象的Jsdoc注释中,获取属性的类型信息。
在一种可选的方式中,若在Javascript文件代码的AST树中遍历到对象,则可以先获取该对象的属性,然后在该对象的Jsdoc注释中,查找出该属性的类型信息。进一步的,可以根据对象的属性获取与该属性关联的第三正则表达式,通过与该属性关联的第三正则表达式在该对象的Jsdoc注释中,查找出属性的类型信息。
步骤150:根据所述参数的类型信息、所述返回值的类型信息、所述属性的类型信息和所述Javascript文件代码的AST树生成Typescript类型的AST树。
其中,可以根据函数的参数的类型信息、函数的返回值的类型信息、对象的属性的类型信息和Javascript文件代码的AST树生成Typescript类型的AST树。进一步的,可以使用babel工具将函数的参数的类型信息、函数的返回值的类型信息、对象的属性的类型信息和Javascript文件代码的AST树进行拼装,以生成Typescript类型的AST树。
步骤160:将所述Typescript类型的AST树转换成Typescript类型的代码,根据所述Typescript类型的代码生成所述Typescript类型文件,其中,所述Typescript类型文件的内容为所述Typescript类型的代码。
其中,可以将Typescript类型的AST树转换成Typescript类型的代码,根据Typescript类型的代码生成Typescript类型文件。Typescript类型文件以.d.ts结尾,用于对Javascript文件进行类型说明。
在一种可选的方式中,可以使用babel工具对Typescript类型的AST树进行处理,以生成Typescript类型的代码。
本发明实施例中,通过遍历Javascript文件代码的AST树,若遍历到函数,则获取函数的参数和返回值,进一步获取参数的类型信息和返回值的类型信息;若遍历到对象,则获取对象的属性,进一步获取属性的类型信息;根据参数的类型信息、返回值的类型信息、属性的类型信息和Javascript文件代码的AST树可以生成Typescript类型的AST树;通过将Typescript类型的AST树转换成Typescript类型的代码,可以根据Typescript类型的代码生成Typescript类型文件,使得生成的Typescript类型文件可以包含详细的类型信息,可以用于Javascript文件与Typescript文件的配合使用。
图2示出了本发明实施例Typescript类型文件生成装置的结构示意图。如图2所示,该装置300包括:第一生成模块310、遍历模块320、第一获取模块330、第二获取模块340、第二生成模块350和第三生成模块360。
第一生成模块310,用于获取Javascript文件代码,并生成所述Javascript文件代码的AST树;
遍历模块320,用于遍历所述Javascript文件代码的AST树;
第一获取模块330,用于若遍历到函数,则获取所述函数的参数和返回值,获取所述参数的类型信息和所述返回值的类型信息;
第二获取模块340,用于若遍历到对象,则获取所述对象的属性,获取所述属性的类型信息;
第二生成模块350,用于根据所述参数的类型信息、所述返回值的类型信息、所述属性的类型信息和所述Javascript文件代码的AST树生成Typescript类型的AST树;
第三生成模块360,用于将所述Typescript类型的AST树转换成Typescript类型的代码,根据所述Typescript类型的代码生成所述Typescript类型文件,其中,所述Typescript类型文件的内容为所述Typescript类型的代码。
在一种可选的方式中,第一获取模块330用于:
根据所述Javascript文件代码的AST树获取所述函数的Jsdoc注释;
在所述函数的Jsdoc注释中,分别获取所述参数的类型信息和所述返回值的类型信息。
在一种可选的方式中,第一获取模块330用于:
获取与所述函数的参数关联的第一正则表达式;
获取与所述函数的返回值关联的第二正则表达式;
根据所述第一正则表达式,在所述函数的Jsdoc注释中查找出所述参数的类型信息;
根据所述第二正则表达式,在所述函数的Jsdoc注释中查找出所述返回值的类型信息。
在一种可选的方式中,第二获取模块340用于:
根据所述Javascript文件代码的AST树获取所述对象的Jsdoc注释;
在所述对象的Jsdoc注释中,获取所述属性的类型信息。
在一种可选的方式中,第二获取模块340用于:
获取与所述对象的属性关联的第三正则表达式;
根据所述第三正则表达式,在所述对象的Jsdoc注释中查找出所述属性的类型信息。
在一种可选的方式中,第一生成模块310用于:
获取Javascript文件代码,使用babel工具对所述Javascript文件代码进行处理,以生成所述Javascript文件代码的AST树。
在一种可选的方式中,第三生成模块360用于:
使用babel工具对所述Typescript类型的AST树进行处理,以生成Typescript类型的代码。
本发明实施例中,通过遍历模块可以遍历Javascript文件代码的AST树,若遍历到函数,则第一获取模块可以获取函数的参数和返回值,进一步获取参数的类型信息和返回值的类型信息;若遍历到对象,则第二获取模块可以获取对象的属性,进一步获取属性的类型信息;第二生成模块可以根据参数的类型信息、返回值的类型信息、属性的类型信息和Javascript文件代码的AST树可以生成Typescript类型的AST树;第三生成模块可以将Typescript类型的AST树转换成Typescript类型的代码,可以根据Typescript类型的代码生成Typescript类型文件,使得生成的Typescript类型文件可以包含详细的类型信息,可以用于Javascript文件与Typescript文件的配合使用。
图3示出了本发明实施例计算设备结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
如图3所示,该计算设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
其中:处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。处理器402,用于执行程序410,具体可以执行上述用于Typescript类型文件生成方法实施例中的相关步骤。
具体地,程序410可以包括程序代码,该程序代码包括计算机可执行指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序410具体可以被处理器402调用使计算设备执行以下操作:
获取Javascript文件代码,并生成所述Javascript文件代码的AST树;
遍历所述Javascript文件代码的AST树;
若遍历到函数,则获取所述函数的参数和返回值,获取所述参数的类型信息和所述返回值的类型信息;
若遍历到对象,则获取所述对象的属性,获取所述属性的类型信息;
根据所述参数的类型信息、所述返回值的类型信息、所述属性的类型信息和所述Javascript文件代码的AST树生成Typescript类型的AST树;
将所述Typescript类型的AST树转换成Typescript类型的代码,根据所述Typescript类型的代码生成所述Typescript类型文件,其中,所述Typescript类型文件的内容为所述Typescript类型的代码。
在一种可选的方式中,所述程序410被处理器402调用使计算设备执行以下操作:
根据所述Javascript文件代码的AST树获取所述函数的Jsdoc注释;
在所述函数的Jsdoc注释中,分别获取所述参数的类型信息和所述返回值的类型信息。
在一种可选的方式中,所述程序410被处理器402调用使计算设备执行以下操作:
获取与所述函数的参数关联的第一正则表达式;
获取与所述函数的返回值关联的第二正则表达式;
根据所述第一正则表达式,在所述函数的Jsdoc注释中查找出所述参数的类型信息;
根据所述第二正则表达式,在所述函数的Jsdoc注释中查找出所述返回值的类型信息。
在一种可选的方式中,所述程序410被处理器402调用使计算设备执行以下操作:
根据所述Javascript文件代码的AST树获取所述对象的Jsdoc注释;
在所述对象的Jsdoc注释中,获取所述属性的类型信息。
在一种可选的方式中,所述程序410被处理器402调用使计算设备执行以下操作:
获取与所述对象的属性关联的第三正则表达式;
根据所述第三正则表达式,在所述对象的Jsdoc注释中查找出所述属性的类型信息。
在一种可选的方式中,所述程序410被处理器402调用使计算设备执行以下操作:
获取Javascript文件代码,使用babel工具对所述Javascript文件代码进行处理,以生成所述Javascript文件代码的AST树。
在一种可选的方式中,所述程序410被处理器402调用使计算设备执行以下操作:
使用babel工具对所述Typescript类型的AST树进行处理,以生成Typescript类型的代码。
本发明实施例的计算设备遍历Javascript文件代码的AST树,若遍历到函数,则获取函数的参数和返回值,进一步获取参数的类型信息和返回值的类型信息;若遍历到对象,则获取对象的属性,进一步获取属性的类型信息;根据参数的类型信息、返回值的类型信息、属性的类型信息和Javascript文件代码的AST树可以生成Typescript类型的AST树;通过将Typescript类型的AST树转换成Typescript类型的代码,可以根据Typescript类型的代码生成Typescript类型文件,使得生成的Typescript类型文件可以包含详细的类型信息,可以用于Javascript文件与Typescript文件的配合使用。
本发明实施例提供了一种计算机可读存储介质,所述存储介质存储有至少一可执行指令,该可执行指令在计算设备上运行时,使得所述计算设备执行上述任意方法实施例中的Typescript类型文件生成方法。
本发明实施例提供一种Typescript类型文件生成装置,用于执行上述Typescript类型文件生成方法。
本发明实施例提供了一种计算机程序,所述计算机程序可被处理器调用使计算设备执行上述任意方法实施例中的Typescript类型文件生成方法。
本发明实施例提供了一种计算机程序产品,计算机程序产品包括存储在计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令在计算机上运行时,使得所述计算机执行上述任意方法实施例中的Typescript类型文件生成方法。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。
本领域技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
Claims (10)
1.一种Typescript类型文件生成方法,其特征在于,所述方法包括:
获取Javascript文件代码,并生成所述Javascript文件代码的AST树;
遍历所述Javascript文件代码的AST树;
若遍历到函数,则获取所述函数的参数和返回值,获取所述参数的类型信息和所述返回值的类型信息;
若遍历到对象,则获取所述对象的属性,获取所述属性的类型信息;
根据所述参数的类型信息、所述返回值的类型信息、所述属性的类型信息和所述Javascript文件代码的AST树生成Typescript类型的AST树;
将所述Typescript类型的AST树转换成Typescript类型的代码,根据所述Typescript类型的代码生成所述Typescript类型文件,其中,所述Typescript类型文件的内容为所述Typescript类型的代码。
2.根据权利要求1所述的方法,其特征在于,所述获取所述参数的类型信息和所述返回值的类型信息包括:
根据所述Javascript文件代码的AST树获取所述函数的Jsdoc注释;
在所述函数的Jsdoc注释中,分别获取所述参数的类型信息和所述返回值的类型信息。
3.根据权利要求2所述的方法,其特征在于,所述在所述函数的Jsdoc注释中,分别获取所述参数的类型信息和所述返回值的类型信息进一步包括:
获取与所述函数的参数关联的第一正则表达式;
获取与所述函数的返回值关联的第二正则表达式;
根据所述第一正则表达式,在所述函数的Jsdoc注释中查找出所述参数的类型信息;
根据所述第二正则表达式,在所述函数的Jsdoc注释中查找出所述返回值的类型信息。
4.根据权利要求1所述的方法,其特征在于,所述获取所述属性的类型信息包括:
根据所述Javascript文件代码的AST树获取所述对象的Jsdoc注释;
在所述对象的Jsdoc注释中,获取所述属性的类型信息。
5.根据权利要求4所述的方法,其特征在于,所述在所述对象的Jsdoc注释中,获取所述属性的类型信息包括:
获取与所述对象的属性关联的第三正则表达式;
根据所述第三正则表达式,在所述对象的Jsdoc注释中查找出所述属性的类型信息。
6.根据权利要求1所述的方法,其特征在于,所述获取Javascript文件代码,并生成所述Javascript文件代码的AST树包括:
获取Javascript文件代码,使用babel工具对所述Javascript文件代码进行处理,以生成所述Javascript文件代码的AST树。
7.根据权利要求1所述的方法,其特征在于,所述将所述Typescript类型的AST树转换成Typescipt类型的代码包括:
使用babel工具对所述Typescript类型的AST树进行处理,以生成Typescript类型的代码。
8.一种Javascript声明文件生成装置,其特征在于,所述装置包括:
第一生成模块,用于获取Javascript文件代码,并生成所述Javascript文件代码的AST树;
遍历模块,用于遍历所述Javascript文件代码的AST树;
第一获取模块,用于若遍历到函数,则获取所述函数的参数和返回值,获取所述参数的类型信息和所述返回值的类型信息;
第二获取模块,用于若遍历到对象,则获取所述对象的属性,获取所述属性的类型信息;
第二生成模块,用于根据所述参数的类型信息、所述返回值的类型信息、所述属性的类型信息和所述Javascript文件代码的AST树生成Typescript类型的AST树;
第三生成模块,用于将所述Typescript类型的AST树转换成Typescript类型的代码,根据所述Typescript类型的代码生成所述Typescript类型文件,其中,所述Typescript类型文件的内容为所述Typescript类型的代码。
9.一种计算设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7任意一项所述的Typescript类型文件生成方法的操作。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一可执行指令,所述可执行指令在计算设备上运行时,使得计算设备执行如权利要求1-7任意一项所述的Typescript类型文件生成方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011487255.7A CN112445468A (zh) | 2020-12-16 | 2020-12-16 | Typescript类型文件生成方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011487255.7A CN112445468A (zh) | 2020-12-16 | 2020-12-16 | Typescript类型文件生成方法、装置、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112445468A true CN112445468A (zh) | 2021-03-05 |
Family
ID=74740420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011487255.7A Pending CN112445468A (zh) | 2020-12-16 | 2020-12-16 | Typescript类型文件生成方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445468A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420531A (zh) * | 2021-06-24 | 2021-09-21 | 北京达佳互联信息技术有限公司 | 一种代码文本的转换方法、装置及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140245134A1 (en) * | 2013-02-25 | 2014-08-28 | Microsoft Corporation | Remotable contracts for the web |
US20190065552A1 (en) * | 2017-08-31 | 2019-02-28 | Oracle International Corporation | Deployment of javascript and typescript stored procedures and user-defined functions into database management systems |
CN110275709A (zh) * | 2018-03-15 | 2019-09-24 | 阿里巴巴集团控股有限公司 | 针对动态语言的处理及优化方法、装置、设备及存储介质 |
CN111324342A (zh) * | 2020-02-10 | 2020-06-23 | 北京字节跳动网络技术有限公司 | 一种生成接口层代码的方法、装置、介质和电子设备 |
CN111930619A (zh) * | 2020-08-06 | 2020-11-13 | 杭州有赞科技有限公司 | 一种实时覆盖率统计方法、计算机设备及可读存储介质 |
CN112015430A (zh) * | 2020-09-07 | 2020-12-01 | 平安国际智慧城市科技股份有限公司 | JavaScript代码翻译方法、装置、计算机设备及存储介质 |
-
2020
- 2020-12-16 CN CN202011487255.7A patent/CN112445468A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140245134A1 (en) * | 2013-02-25 | 2014-08-28 | Microsoft Corporation | Remotable contracts for the web |
US20190065552A1 (en) * | 2017-08-31 | 2019-02-28 | Oracle International Corporation | Deployment of javascript and typescript stored procedures and user-defined functions into database management systems |
CN110275709A (zh) * | 2018-03-15 | 2019-09-24 | 阿里巴巴集团控股有限公司 | 针对动态语言的处理及优化方法、装置、设备及存储介质 |
CN111324342A (zh) * | 2020-02-10 | 2020-06-23 | 北京字节跳动网络技术有限公司 | 一种生成接口层代码的方法、装置、介质和电子设备 |
CN111930619A (zh) * | 2020-08-06 | 2020-11-13 | 杭州有赞科技有限公司 | 一种实时覆盖率统计方法、计算机设备及可读存储介质 |
CN112015430A (zh) * | 2020-09-07 | 2020-12-01 | 平安国际智慧城市科技股份有限公司 | JavaScript代码翻译方法、装置、计算机设备及存储介质 |
Non-Patent Citations (7)
Title |
---|
KRISTÍN FJÓLA TÓMASDÓTTIR等: "The Adoption of JavaScript Linters in Practice: A Case Study on ESLint", 《IEEE TRANSACTIONS ON SOFTWARE ENGINEERING》, vol. 46, no. 8, pages 863 - 891, XP011804472, DOI: 10.1109/TSE.2018.2871058 * |
古兰精: "浅析AST抽象语法树及如何利用AST转换JS代码", pages 1 - 17, Retrieved from the Internet <URL:https://www.cnblogs.com/goloving/p/14078228.html> * |
史橹;吴毅坚;赵文耘;: "JavaScript代码分析技术综述", 计算机应用与软件, no. 11, pages 22 - 31 * |
张磊: "基于污点分析的JavaScript应用脆弱性检测工具研究与实现", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, no. 11, pages 139 - 161 * |
查春柳: "基于程序分析的JavaScript程序缺陷检测与定位", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, no. 07, pages 138 - 469 * |
范纯亮: "基于LayaAir引擎的H5游戏设计与开发", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, no. 03, pages 138 - 709 * |
黄松等: "基于JavaCC的抽象语法树的构建与实现", 《计算机工程与设计》, vol. 37, no. 04, pages 938 - 943 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420531A (zh) * | 2021-06-24 | 2021-09-21 | 北京达佳互联信息技术有限公司 | 一种代码文本的转换方法、装置及存储介质 |
CN113420531B (zh) * | 2021-06-24 | 2024-03-12 | 北京达佳互联信息技术有限公司 | 一种代码文本的转换方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111488174B (zh) | 应用程序接口文档的生成方法、装置、计算机设备及介质 | |
US8745584B2 (en) | Dependency injection by static code generation | |
KR101908162B1 (ko) | 통합 개발 환경에서의 라이브 브라우저 툴 제공 기법 | |
US20130263089A1 (en) | Generating test cases for functional testing of a software application | |
EP2407887B1 (en) | Solving hybrid constraints to validate specification requirements of a software module | |
US8392467B1 (en) | Directing searches on tree data structures | |
EP2420931A1 (en) | Solving hybrid constraints to generate test cases for validating a software module | |
CN111680253B (zh) | 页面应用数据包生成方法、装置、计算机设备及存储介质 | |
US10447764B2 (en) | Mapping selections between a browser and the original fetched file from a web server | |
US9384236B2 (en) | Method and system for operating on database queries | |
CN112379917B (zh) | 浏览器兼容性提升方法、装置、设备及存储介质 | |
CN112540862A (zh) | 一种接口文档数据生成方法、装置、设备及存储介质 | |
US9141344B2 (en) | Hover help support for application source code | |
CN112069456A (zh) | 一种模型文件的生成方法、装置、电子设备及存储介质 | |
CN116028028A (zh) | 请求函数生成方法、装置、设备及存储介质 | |
JP2017174418A (ja) | モデルチェックのためのデータ構造抽象化 | |
AU2012203538B2 (en) | Systems and methods for inter-object pattern matching | |
CN113961768B (zh) | 敏感词检测方法、装置、计算机设备和存储介质 | |
US9274755B2 (en) | Infrastructure for generating code using annotation and template generators | |
US8935657B2 (en) | Model-to-model transformation by kind | |
CN112445468A (zh) | Typescript类型文件生成方法、装置、设备及计算机可读存储介质 | |
CN112632333A (zh) | 查询语句生成方法、装置、设备及计算机可读存储介质 | |
Raj et al. | Distributed component-based crawler for AJAX applications | |
CN115686467A (zh) | 动态语言中的类型推断 | |
US20240004620A1 (en) | Automated generation of web applications based on wireframe metadata generated from user requirements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |