Articles of 打字稿

如何在打字稿文件中使用现有的JavaScript文件?

我在javascript中使用nodejs + express来存在项目。 目前一切工作在es5上。 现在我在同一个项目中添加了打字稿,我想在打字稿中做所有新的开发。 但我正在访问现有的JavaScript文件面临一个问题。 我发现我可以创build每个现有的JavaScript文件的定义文件xx.d.ts(不知道是否是正确的方法),然后在打字稿文件中使用它。 例如,我有javscript文件 myFile.js function myClass(){ //some functions here associated with this variable } exports.myData = new myClass(); 现在我想在我的新的ts文件中使用它 所以我在ts文件中访问的是 declare function require(path: string): any; var auth = require('./myFile').myData; 我不确定这是否正确。 其次我试着用myFile.d.ts文件。 我以下面的方式定义了这个文件 declare module './myFile' { export var myData: any } 但是这给出了相对path的错误 – TS2436环境模块声明不能指定相关的模块path 请让我知道,如果有人有任何想法来解决这个问题,或build议是否可以采取第一种方法。

如何在React Native和VSCode中使用带(或不带)Typescript的Nodestream

我使用ReactNativify (而不是更多的hacky的rn-nodeify方法)将一些基于Node的软件包移植到React Native,以在依赖关系树中浏览/ 清除 Node API对象。 我正在开发VSCode。 使用ReactNativify,您可以在.babelrc中使用babel-plugin-rewrite-require (或者在rn-cli.config.js + transformer.js使用javascript): { … "plugins": [ ["rewrite-require", { "aliases": { "constants": "constants-browserify", "crypto": "react-native-crypto", "dns": "node-libs-browser/mock/dns", "domain": "domain-browser", "stream": "stream-browserify", "_stream_duplex": "readable-stream/duplex", "_stream_passthrough": "readable-stream/passthrough", "_stream_readable": "readable-stream/readable", "_stream_transform": "readable-stream/transform", "_stream_writable": "readable-stream/writable", … etcetera } }] … } ( 在这里看一个完整的例子) 这工作得很好,我在VSCode中得到了很好的代码完成/智能感知等。 现在我想在如下的MyStream.js使用Node的Stream: import { Duplex } from 'stream' […]

带有node.js的Typescript给出“不是构造函数”的错误

我有一个node.js应用程序与两个打字稿文件。 matchmanager.ts被定义为 – namespace LobbyService { export class MatchManager { constructor() { /*code*/ } } } 和main.ts被定义为 namespace LobbyService { let matchManager: MatchManager = new MatchManager() ; /* code */ } 我安装Visual Studio输出文件到一个名为lobbyservice.js的JS文件 但是,当我input node lobbyservice.js 我得到以下错误 – TypeError: LobbyService.MatchManager is not a constructor 生成的文件有这个输出 – var LobbyService; (function (LobbyService) { var matchManager = new […]

使用cxsd将.xsd转换为TypeScript,不能识别cxsd

我正在尝试使用npm库cxsd从xsd文件创build打印稿定义。 我已经通过npm安装了windows-build-tools为cxsd提供了所需的工具。 当我尝试跑步 npm run cxsd http://schemas.opengis.net/wfs/1.1.0/wfs.xsd 如cxsd的GitHub( https://github.com/charto/cxsd )所述,我得到这个错误 'csxd' is not recognized as an internal or external command,operable program or batch file. 我已经在package.json中包含了脚本“cxsd”:“csxd”。

TypeOrm – OneToOne连接更新尝试删除相关logging

我有一个使用TypeORM的项目,我有以下两个实体 @Entity("Email") export class EmailEntity extends BaseEntity implements IEmail { @Column({length: 100}) to: string; @Column({length: 100}) from: string; @Column({length: 255}) subject: string; @Column({nullable: true}) html: string; @Column({nullable: true}) text: string; } 和 @Entity("QueuedEmail") export class QueuedEmailEntity extends BaseEntity implements IQueuedEmail { @OneToOne(email => EmailEntity, {nullable: false, cascadeAll: true}) @JoinColumn() email: EmailEntity; @Column() retryCount: number; @Column() […]

节点读取模块/读取代码文件

你如何从文件中读取类? 的.src /我-a.service.ts export class MyAService { … } 的.src /我-b.service.ts export class MyBService { … } ./read-modules.js const fs = require('fs'); const _ = require('lodash'); let files = fs.readdirSync('./src') .filter(item => { return _.includes(item, '.service.ts') }); files.forEach(item => { // get ['MyAService', 'MyBService'] }); 我知道你可以做一些stringparsing,但有一个高层次的方式来读取从文件(不导入代码,只是获得导出的类的名称)的JS / TS导出。 编辑1:有* X.service.ts文件my-a.service.ts和my-b.service.ts只是例子。 我不是试图导入或要求这些类在代码中使用它们只是获取代码生成的类名称。 编辑2:我看起来像tsreflect-compiler是我所需要的: const fs = […]

React本机应用程序无法在Android中启动,并在debugging版本上显示多条警告消息

环境 react-native-cli:2.0.1,node:v8.2.1,npm:5.3.0, 目标平台:Android 5.0 x86-64图像 开发操作系统:Windows 7专业版,x86_64 的package.json "dependencies": { "axios": "^0.16.2", "buffer": "^5.0.6", "lodash": "^4.17.4", "mobx": "^3.2.1", "mobx-react": "^4.2.2", "react": "16.0.0-alpha.12", "react-native": "0.45.1", "react-native-background-timer": "^1.1.0", "react-native-fetch-blob": "latest", "react-native-timer": "^1.3.1" }, "devDependencies": { "babel-jest": "20.0.3", "babel-preset-react-native": "2.0.0", "jest": "20.0.4", "react-test-renderer": "16.0.0-alpha.12", "tslint": "^5.4.3", "typescript": "^2.4.1", "typings": "^2.1.1" }, 重现步骤 npm安装,npm运行构build,react-native run-android 预期的行为 这应该是在通过USB连接的物理设备上或运行的仿真器上成功启动应用程序。 实际行为 应用程序无法启动这些警告消息: […]

如何将护照与路由控制器结合起来?

我目前正试图执行passport-ldap和passport-jwt到我的rest API。 对于路由,我使用pleerock /路由控制器 ,它有一个授权的方式,但它与布尔和护照工作,我真的不知道。 我甚至不确定是否有可能将两者结合起来。 目前AuthorizationChecker返回false,因为我不知道如何使passport.authenticate成为一个布尔值。 useExpressServer(app, { controllers: [UserController, IssueController, LoginController], authorizationChecker: async (action: Action) => { return false; } @Authorized() @Get("/test") test(@Res() response: Response){ response.send("Test done.") } 如何使用passport.authenticate()与路由控制授权?

新的实例与标准函数内存使用socket.io事件

我使用typescript和socket.io。 标准解决scheme如下所示: socket.on('event', (msg: any, cb:Function) => self.eventFn(msg, cb)); 由于许多asynchronous调用堆栈(300 – 600行,8 – 10深度),事件的function太长和深。 为了解决这个烦人的代码devise,我开始考虑使用类而不是像这样的函数: socket.on('event', (msg: any, cb:Function) => new EventClass(msg, cb)); 在这种情况下,我可以将进程的一部分分成小单元,我猜可能代码重用性也更好。 这看起来不错,但是,我担心这是使用更多的内存,因为我在每个套接字事件上创build一个新的实例,也许它也使用更多的CPU。 所以,问题是:我的恐惧是否合法?

如何处理DeprecationWarning:未处理的承诺拒绝在量angular器中被弃用

我正在使用Typscript编写的页面对象Protractor框架,该框架应用了asynchronous/等待function。 我坚持茉莉花。 我正在testing使用Angular和Angular CLI构build的应用程序。 有一些情况下,一个元素在断言之前没有出现,因为这个问题没有作为断言的一部分处理,所以testing挂起了60秒,直到我收到一个jasmine.DEFAULT_TIMEOUT_INTERVAL错误。 我也收到以下depracationWarning从节点: (节点:9796)[DEP0018]弃用警告:不处理的承诺拒绝已被弃用。 将来,未处理的承诺拒绝将使用非零退出代码来终止Node.js进程。 正如您期望的那样,testing会导入所需的页面对象,并扩展常见的操作。 规格如下: it('should allow user to update bank acocunt number', async(done) => { await sideMenu.clickMenuItem(sideMenu.myDetailsOption); await sideMenu.clickMenuItem(sideMenu.bankDetailsOption); await bankDetailsPage.editAccountNumber('12345678'); await bankDetailsPage.isDisplayed(bankDetailsPage.confirmationOfUpdateText) .then(isVisible => expect(isVisible).toBeTruthy()) .then(done, done.fail); }, 60000); 我的第一个想法是赶上承诺拒绝,所以我做了以下修改: it('should allow user to update bank acocunt number', async(done) => { await sideMenu.clickMenuItem(sideMenu.myDetailsOption).catch(done.fail); await sideMenu.clickMenuItem(sideMenu.bankDetailsOption).catch(done.fail); await bankDetailsPage.editAccountNumber('12345678').catch(done.fail); await […]