Tag: 打字稿

TypeScript中的内部和外部模块有什么区别?

我花了一些时间阅读Typescript语言规范,对内部和外部模块之间的区别有些困惑。 以下是从规范中直接得到的描述: 内部模块(第9.2.2节)是本地或其他模块的导出成员(包括全局模块和外部模块)。 内部模块使用ModuleDeclarations声明它们的名称和正文。 具有多个标识符的名称path相当于一系列嵌套的内部模块声明。 外部模块(第9.4节)是使用外部模块名称引用的代码的单独加载主体。 外部模块被编写为一个单独的源文件,其中至less包含一个导入或导出声明。 另外,可以在全局模块中使用AmbientModuleDeclarations声明外部模块,这些模块直接将外部模块名称指定为string文字。 这在第0节进一步描述。 从我所理解的,我认为外部模块对应于typescript文件,而不包含简单地导出一组types和/或variables的模块定义。 从另一个打字稿文件,我可以简单地导入foo.ts中的外部模块与import foo = module("foo"); 有人可以向我解释外部和内部模块之间的命运吗?

打字稿中的module.exports

有人知道如何做一个module.exports? 我尝试了一些不同的方式结束 export class Greeter {} 这将编译到 exports.Greeter = Greeter; 但我真正想要的是这样的: exports = Greeter; 所以我可以像这样使用它: import Greeter = module("Greeter"); var greeter = new Greeter(); 并不是 import Greeter = module("Greeter"); var greeter = new Greeter.Greeter(); 这可能与Typescript?

Angular 2:是否可以从组件类访问模板引用variables?

<div> <input #ipt type="text"/> </div> 是否有可能从组件类访问模板访问variables? 即,我可以在这里访问它, class XComponent{ somefunction(){ //Can I access #ipt here? } }

如何使用打字稿的es6-promises?

我读了这个问题,但没有得到承诺与打字稿的工作。 希望我们能做出明确的指导。 这是一个服务器/节点项目。 我实际上使用最新的iojs,但是将ES5作为输出。 $ tsd query es6-promise –action install –save $ npm install –save es6-promise // typescript code: /// <reference path="../../typings/es6-promise/es6-promise.d.ts"/> var Promise = require("es6-promise").Promise; require('es6-promise').polyfill(); function test():Promise { var p:Promise = new Promise(); return p; } 这是给错误: Cannot find name 'Promise'. //或者: var p = new Promise<string>((resolve, reject) => { resolve('a string'); }); […]

在打字稿中,什么是! (感叹号/砰)操作员提领会员?

当查看一个tslint规则的源代码时,我遇到以下声明: if (node.parent!.kind === ts.SyntaxKind.ObjectLiteralExpression) { return; } 注意! 运算符在node.parent之后。 有趣! 我首先尝试用我当前安装的TS版本(1.5.3)在本地编译文件。 由此产生的错误指向爆炸的确切位置: $ tsc –noImplicitAny memberAccessRule.ts noPublicModifierRule.ts(57,24): error TS1005: ')' expected. 接下来我升级到了最新的TS(2.1.6),它没有问题地编译它。 所以它似乎是TS 2.x的function。 但是这个编译完全忽略了爆炸,导致了下面的JS: if (node.parent.kind === ts.SyntaxKind.ObjectLiteralExpression) { return; } 我的Google fu已经失败了。 什么是TS的感叹号运算符,它是如何工作的?

我应该如何使用TypeScript 2的@types

到目前为止,我们习惯了tsd或(更好的版本)types 但现在,TypeScript 2提供了新的@typesfunction,我应该如何转换我的当前项目与@types一起工作? 我有tsd.json(typings.json是一些情况)与所有的依赖关系,步骤转移到TypeScript 2? 什么是新的最佳实践? @types是否支持特定版本? 谢谢!

用TypeScript设置window.location

我遇到以下TypeScript代码的错误: ///<reference path='../../../Shared/typescript/jquery.d.ts' /> ///<reference path='../../../Shared/typescript/jqueryStatic.d.ts' /> function accessControls(action: Action) { $('#logoutLink') .click(function () { var $link = $(this); window.location = $link.attr('data-href'); }); } 我得到一个下划线的红色错误为以下内容: $link.attr('data-href'); 消息说: Cannot convert 'string' to 'Location': Type 'String' is missing property 'reload' from type 'Location' 有谁知道这是什么意思?

什么是TypeScript地图文件?

我见过TypeScript的.map文件。 我想知道的是这些文件的用途。 它们是否包含对.ts文件中引用的其他文件的引用?

Typescript es6导入模块“文件不是模块错误”

我用es6模块语法使用typescript 1.6。 我的文件是: test.ts: module App { export class SomeClass { getName(): string { return 'name'; } } } main.ts: import App from './test'; var a = new App.SomeClass(); 当我试图编译main.ts文件时,我得到这个错误: 错误TS2306:文件'test.ts'不是一个模块。 我怎么能做到这一点?

如何用Jasmine为私有方法编写Angular 2 / TypeScript的unit testing

你如何testingangular2的私人function? class FooBar { private _status: number; constructor( private foo : Bar ) { this.initFooBar(); } private initFooBar(){ this.foo.bar( "data" ); this._status = this.fooo.foo(); } public get status(){ return this._status; } } 我find的解决scheme 将testing代码本身放在闭包中,或者在闭包中添加代码,将外部作用域中现有对象上的局部variables的引用存储在闭包中。 之后用工具去掉testing代码。 http://philipwalton.com/articles/how-to-unit-test-private-functions-in-javascript/ 如果你做了什么,请给我build议一个更好的方法来解决这个问题? PS 大多数类似这样的问题的答案不能解决问题,这就是为什么我问这个问题 大多数开发者说你不要testing私有函数,但是我不认为它们是错误的或者正确的,但是我的情况是需要testing私有的。