目前我正在尝试使用TypeScript创建一个index.js文件中所需的JavaScript文件。我正在使用带有node.js工具1.2 RC的VS 2015 Update 3。可悲的是,它没有像我想象的那样工作。
首先,我最初的想法是:
我有一个节点模块(确切地说,它是一个deployd模块http://docs.deployd.com/docs/using-modules/)。此模块正在处理paypal或stripe等支付提供商。现在我想使用TypeScript编写接口,类和使用类型,以便更容易添加新的支付提供程序。旧的.js文件应该仍然存在并使用。我想逐步迁移并一起使用自编和编译的.js文件。所以我想我可以创建.ts文件,编写我的代码,保存,让VS编译成js并在另一个js文件中要求编译的js文件。好的,这是我的想法......现在问题
我有一个看起来像这样的PaymentProvider.ts文件
import IPaymentProvider = require("./IPaymentProvider.ts"); // Interface, can't be realized in JavaScript, just TypeScript
export abstract class PaymentProvider implements IPaymentProvider.IPaymentProvider
{
providerName: string;
productInternalId: number;
constructor(providerName : string)
{
this.providerName = providerName;
}
//... some methods
};
另一个文件是PaypalPaymentProvider.ts
import PaymentProvider = require("./PaymentProvider.ts");
export class PaypalPaymentProvider extends PaymentProvider.PaymentProvider
{
constructor()
{
super("paypal");
}
// more methods
}
VS 2015没有显示任何错误。生成js和.js.map文件。现在我以为我可以要求文件,就是这样。我试图使用PaypalPaymentProvider.js像这样 const PaypalPaymentProvider = require(“./ lib / payment-provider / PaypalPaymentProvider.js”); (是的,它位于那里)但它不起作用。通过节点启动index.js时出现以下错误:
... \ Path \ PaymentProvider.ts:1(函数(exports,require,module,__ filename,__ dirname){import IPaymentProvider = require(“./ IPaymentProvider.ts”);意外的令牌导入.... < / p>
我觉得奇怪的是这是错误,因为JavaScript没有接口。已编译的IPaymentProvider.js为空。 另外我认为TypeScript主要用于开发和编译的JavaScript用于生产。那么为什么需要一个ts文件呢?我以为打字稿中的导入会转换成需要编译的js文件吗? 我是否需要要求所有已编译的js文件,而不仅仅是我目前尝试使用的文件? (我不这么认为......)
老实说,我认为主要的问题是我是TypeScript的新手并且从一开始就犯了错误。
任何帮助/建议?谢谢!
答案 0 :(得分:0)
我有解决方案......感谢Paelo的链接,我能够看到我需要省略文件结尾!所以真正简单的解决方案是编写
导入IPaymentProvider = require(&#34; ./ IPaymentProvider&#34;);
而不是
导入IPaymentProvider = require(&#34; ./ IPaymentProvider.ts&#34;);
当我在每个ts文件中更改它时,它工作得很好!