Moment-with-locales和TypeScript

时间:2016-11-02 17:53:42

标签: javascript angularjs typescript momentjs

早上好,

我正在开发一个基于Angular 1.5的网站,该网站已经大量国际化,我正在尝试整合MomentJS,因此我们的日期也可以国际化。

我们的许多代码都在TypeScript中,而且我很难让Moment的东西在TypeScript中运行。

Moment目前为2.15.2,根目录文件夹中有一个moment.d.ts文件,但由于我正在国际化,我需要使用min / moment-with-locales.js文件,并且没有TypeScript定义文件。

如果我继续使用

/// <reference path="../../bower_components/moment/moment.d.ts" />

它不起作用,因为这是一个不同的时刻实例,而不是我正在使用的locales.js。

这也不起作用:

import moment = require("../../bower_components/moment/min/moment-with-locales");

然后我接受了moment.d.ts文件,将其复制到min /文件夹中并将其重命名为moment-with-locales.d.ts,并在我的TypeScript文件中使用它,它似乎正在工作,但我对此感到不安。

那么我如何在TypeScript文件中使用moment-with-locales.js文件呢?

我只是做错了什么,或者使用TypeScript中的普通JavaScript通常很难?

1 个答案:

答案 0 :(得分:0)

基本上,在Typescript中,定义文件(*.d.ts)仅用于编译时,其主要目的是确保您的代码符合这些文件中指定的内容。

定义文件在运行时根本不会干扰它们的JS对应物,只要你的代码通过编译阶段,它就应该像编写JS文件那样行为。

如果您没有定义文件,作为快速入侵,您可以简单地声明一些var或函数(请注意,这不是一个好的做法,但是,绝望的时候需要绝望的措施)。< / p>

例如,假设您有一个声明名为MySuperComplexJSLibrary的var的库,在Typescript中,您可以声明/导出类型为any的var。这将允许使用这个惊人的库的每个属性和方法,没有编译问题。