javascript - Moment-with-locales 和 TypeScript

标签 javascript angularjs typescript momentjs

早上好,

我正在开发一个基于 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/

相关文章:

typescript - Vue.js + TypeScript项目无法在.vue文件中呈现模板

javascript - Angular2管道动态值不取

javascript - Angular Directive(指令)重新获得焦点

javascript 不显示innerHTML

javascript - 如何在多个 fabric js Canvas 的情况下管理内存?

javascript - 基于增量切换 boolean 值

javascript - 如何使查询 WebSQL 不减?

javascript - 如何将第一个选择选项设置为始终为空

javascript - Babylon.js OnIntersectionEnterTrigger 未使用相机触发

javascript - 在 Angular 2 应用程序中注销之前获取最后一个事件 URL