早上好,
我正在开发一个基于 Angular 1.5 的高度国际化的网站,并且我正在尝试集成 MomentJS,以便我们的日期也可以国际化。
我们的很多代码都是用 TypeScript 编写的,但我在让 Moment 的东西在 TypeScript 中工作时遇到了麻烦。
Moment 目前版本为 2.15.2,moment 根文件夹中有一个 moment.d.ts 文件,但因为我要对其进行国际化,所以我需要使用 min/moment-with-locales.js 文件,并且没有相应的 TypeScript 定义文件。
如果我继续使用
/// <reference path="../../bower_components/moment/moment.d.ts" />
它不起作用,因为那是一个与我正在使用的 moment-with-locales.js 不同的 moment 实例。
这也不起作用:
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 通常很难?
最佳答案
基本上,在 Typescript 中,定义文件 (*.d.ts
) 仅在编译时使用,其主要目的是确保您的代码与这些文件中指定的内容一致.
定义文件在运行时根本不会干扰它们的 JS 对应部分,只要您的代码通过编译阶段,它的行为就应该与编写的 JS 文件完全相同。
如果您没有定义文件,作为快速破解,您可以简单地声明一些 var 或函数(请注意,这不是一个好的做法,但是,绝望的时刻需要绝望的措施)。
例如,假设您有一个库,它声明了一个名为 MySuperComplexJSLibrary
的 var,在 Typescript 中,您可以声明/导出一个 any
类型的 var。这将允许使用这个令人惊叹的库的每个属性和方法,而不会出现编译问题。
关于javascript - Moment-with-locales 和 TypeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40386609/