【问题标题】:Moment-with-locales and TypeScriptMoment-with-locales 和 TypeScript
【发布时间】:2016-11-02 17:53:41
【问题描述】:

早上好,

我正在开发一个高度国际化的基于 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 通常这么难?

【问题讨论】:

    标签: javascript angularjs typescript momentjs


    【解决方案1】:

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

    定义文件在运行时完全不会干扰对应的 JS,只要您的代码通过编译阶段,它的行为就应该与编写 JS 文件的行为完全相同。

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

    例如,假设你有一个库声明了一个名为 MySuperComplexJSLibrary 的 var,在 Typescript 中,你可以声明/导出一个 any 类型的 var。这将允许使用这个神奇库的每个属性和方法,而不会出现编译问题。

    【讨论】:

      猜你喜欢
      • 2016-05-12
      • 2016-07-11
      • 1970-01-01
      • 2017-12-23
      • 2021-02-05
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      相关资源
      最近更新 更多