Tag: typescript

将数组传递给asynchronous库eachSeries – 期望Dictionary <{}>'

我有以下TypeScript代码: const allDescribeBlocks: Array<ITestSuite> = suman.allDescribeBlocks; async.eachSeries(allDescribeBlocks, function (block: ITestSuite, cb: Function) { //…. }, cb); 这将会发出警告: typesITestSuite []的参数不可分配给typesDictionary <{}>的参数。 索引签名在ITestSuite []中缺失。 怎么修? 这是确切的警告:

types“MongooseDocument”没有与“Mongoose”types相同的属性

我在我的koa2项目中使用了typescript。节点环境是8.我已经安装了dt〜mongoose。但是当我运行这个项目时,它输出错误: typings/globals/mongoose/index.d.ts(841,9): error TS2559: Type 'MongooseDocument' has no properties in common with type 'MongooseDocumentOptionals'

使用VSCode在浏览器中debugging简单的Typescript应用程序

我正在构build我的第一个打字稿项目(我的背景是C#,Java)。这些应用程序按预期工作,但是我不能在打字稿中放置一个断点并debugging应用程序。 此外,当我使用纯打字机编译器(tscs与tsc.exe)映射完美的作品。 我正在使用gulp,因为我想将所有js放入一个文件中。 当生成的js中有一个错误,那么Visual Studio代码打击js文件(bundle.js)中的断点而不是打字稿,但是自定义断点不工作 我正在使用Windows 10进行开发。 请在下面find我的代码。 HTML 的index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Hello World!</title> <!– <script data-main="main" src="scripts/require.js"></script> –> </head> <body> <p id="greeting">Loading …</p> <script src="bundle.js"></script> </body> </html> 键入脚本 main.ts import { Student } from "./student"; class Startup { public static main(): string { return Startup.showHello(); } public static showHello() […]

用于Node.js的Typescript AMD模块

我有我用AMD模块编译的以下Typescript文件: import tsmx = module("../TSMX/tsmx"); tsmx.createServer(1337); 产生以下js: define(["require", "exports", "../TSMX/tsmx"], function(require, exports, __tsmx__) { var tsmx = __tsmx__; tsmx.createServer(1337); }) 当我尝试加载它在Node.js我得到以下错误: (函数(exports,require,module,__filename,__dirname){define([“require ^ ReferenceError:define is not defined at Object。(C:\ DB \ Repo \ TSMX \ TSMX \ TSMXTest \ app.js:1:63 )在Module.load(module.js:356:32)上的Module._compile(module.js:456:26)位于Function.Module的Object.Module._extensions..js(module.js:474:10)在node.js:901:3启动时(node.js:119:16)的Function.Module.runMain(module.js:497:10)处的_load(module.js:312:12) 如何使这个工作,并得到“定义”定义? 我需要AMD模块,因为我会在浏览器中加载一些代码。 我来自C#和AS3其中import/命名空间是很容易很抱歉,如果这是一个业余爱好者的问题。 编辑:按照http://requirejs.org/docs/node.html#nodeModules的build议,我添加到文件的顶部: if (typeof define !== 'function') { var define = require('amdefine')(module […]

Visual Studio NodeJS工具 – 如何打包项目? 创buildNPM?

我有一个混合了NodeJS(使用TypeScript)和C#类库项目(它们被EdgeJS绑定在一起)的VS2013解决scheme。 对于NodeJS项目而言,可以将其视为一个库(对于RabbitMQ总线实现),其中两个应用程序是作为第四个项目的一部分使用该总线进行托pipe的。 所以,一个项目( 主机 )将取决于三个项目( 公交车 , app1和app2 )(启动公交车 ,并将其传递给app1和app2 )。 当然,我可以将所有这些项目整合在一起,并完成它 – 但这是一个可怕的想法。 如何打包这些项目以便正确地重用和引用(如传统.NET中的程序集)? NPM最好吗? 如果是这样,VS是否提供这方面的任何东西? 如果不是,那么是什么? 请注意,除了公共汽车项目,我不打算公开发布 – 我不知道这是否会改变任何东西。

在后期制作中与Visual Studio的运行结果不一致

我正在运行gulp 3.9.0并从Visual Studio 2013中调用一些gulp命令。stream程是这样的,每当我在VS中生成,gulp应该清理我的临时文件和输出文件,然后在成功构build之后,将我的javascript资源编译为一个文件。 问题是,我注意到,在运行“gulp build”之后,有时我的资产根本不会生成。 这甚至发生在命令行上。 运行“gulp clean”(删除输出)之后,我必须运行“gulp build”两次,才能看到输出的具体化。 就好像吞了一口气一样。 不知道这是否是在Windows上运行的节点的问题,或者如果我错误地configuration了某些东西。 请注意,VS负责将所有TypeScript文件编译到\ output文件夹中的单个.js文件中。 先进的道歉,如果有更好的办法做我想做的事情。 仍然是一个吞咽/节点的新手。 VS预build: gulp clean VS后生成: gulp build gulpfile.js: var gulp = require('gulp'); var del = require('del'); var concat = require('gulp-concat'); var ngAnnotate = require('gulp-ng-annotate'); var uglify = require('gulp-uglify'); var templateCache = require('gulp-angular-templatecache'); var concatCss = require('gulp-concat-css'); var minifyCss = require('gulp-minify-css'); […]

在TypeScript中导入时找不到模块

我有一个导入nodejs模块的小问题。 对于http模块,这个语法运行良好: import * as http from "http"; 但是,当我试图做'mysql2'node.js模块相同: import * as database from "mysql2"; 我给了我一个错误: Cannot find module 'mysql2' 并拒绝编译该行。 我甚至尝试过这样的语法(不知道为什么): import {database} from 'mysql2'; 但是只有我这样写的时候没有错误: let database = require('mysql2'); 在tsconfig.json我已经设置: "module": "commonjs", "moduleResolution": "node", 当然,我已经通过npm在项目文件夹中安装了模块: npm install mysql2 –save 所以我的问题是,为什么导入不工作,我有错误的Visual Studio代码?

如何为代替“exports”对象的模块创buildTypescript(1.8)types定义?

我想创build一个模块的types定义,用一个匿名函数replacemodule.exports。 所以,模块代码这样做: module.exports = function(foo) { /* some code */} 要在JavaScript(Node)中使用模块,我们这样做: const theModule = require("theModule"); theModule("foo"); 我已经写了一个.d.ts文件这样做: export function theModule(foo: string): string; 然后我可以像这样写一个TypeScript文件: import {theModule} from "theModule"; theModule("foo"); 当我编译成JavaScript时,我得到: const theModule_1 = require("theModule"); theModule_1.theModule("foo"); 我不是模块作者。 所以,我不能改变模块代码。 如何编写我的types定义,以便它正确地转换为: const theModule = require("theModule"); theModule("foo"); 编辑:为了清晰起见,基于正确的答案,我的最终代码如下所示: 该-module.d.ts declare module "theModule" { function main(foo: string): string; export = main; […]

打字错误首先callback打字(noImplicitAny,strictNullChecks)

我想在一个项目中使用带有noImplicitAny和strictNullChecks声明一个带有错误优先callback的函数。 有没有办法来声明一个interface或type ,允许两个不同的签名和调用时工作? 最简单最直接的方法就是这样宣布 function example(callback: (err?: Error, result?: {data: any}) => void) { callback(undefined, {data: "hello"}); } 然而,这允许我调用callback() (没有参数),这不是我们想要做的事情,因为callback应该总是以错误或者结果来调用。 function example(callback: (err: Error | undefined, result: {data: any} | undefined) => void) { callback(undefined, {data: "hello"}); } 这不允许example() 。 callback必须用2个参数调用。 然而,这两种模式都意味着err和result都可能是undefined 。 这是不完美的,因为以下将导致错误。 example((err, result) => { if(err) { console.error(err); return; } console.log(result.data); }); […]

NPM模块+ TypeScript最佳实践

我想在TypeScript中编写一个npm模块。 有人可以推荐我一个最佳做法指导如何开始? 我的问题是: Node.js不支持TypeScript,对吗? 那么推荐的方式是如何发布一个npm模块呢? 将2个文件夹/ ts / js和package.json引用到js / index.js作为入口点。 或者使用某种types的运行时转换器并直接运行TypeScript文件? 或者,不build议在npm模块中发布任何TypeScript代码,只是将其编译为普通的Javascript并在Git存储库中提供TypeScript源代码? 键入支持的推荐方式是什么? 我看到我可以在我的package.json中引用打字文件。 他们可以在网上,我应该提供他们与npm模块或者应该ts和dtd文件根本不被发布? 安装他们typings并提供typings.json以及? 如果我想为我的代码提供键入支持,build议如何执行此操作? 即使我的模块是非常小和简单(做一件事,做正确的)它可能是有用的提供一些信息和自动完成支持。 我还是新来的TypeScript,所以不知道什么是最好的办法做到这一点。 我会猜想写一个接口,并提供与我的NPM模块。 这些文件以后应该上传到DefinitelyTyped目录还是只为更大的图书馆感觉? 我很想在这里如何正确使用当前的TypeScript和Node Version来做到这一点,因为我发现的很多信息都是过时的,如autodts,tsd等。 我很高兴如果有人能帮助我。 只要我知道这是如何做的正确的方式,我会做一个文档,并提供这些信息在Github上的其他人。 干杯