![](/img/trans.png)
[英]Get warning deprecation : moment.updateLocale(); at moment-with-locales js
[英]Moment-with-locales and TypeScript
早上好,
我正在开发一个高度国际化的基于 Angular 1.5 的站点,并且我正在尝试集成 MomentJS,以便我们的日期也可以国际化。
我们的很多代码都在 TypeScript 中,我无法让 Moment 的东西在 TypeScript 中工作。
Moment 目前是 2.15.2,并且在根 moment 文件夹中有一个 moment.d.ts 文件,但是因为我正在国际化这个我需要使用 min/moment-with-locales.js 文件,并且有没有 TypeScript 定义文件。
如果我提前使用 go 并使用
/// <reference path="../../bower_components/moment/moment.d.ts" />
它不起作用,因为那是与我正在使用的 moment-with-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 通常这么难?
基本上,在Typescript中,定义文件( *.d.ts
)仅用于编译时,其主要目的是确保您的代码与这些文件中指定的内容一致。
定义文件在运行时完全不会干扰其JS对应文件,只要您的代码通过了编译阶段,它的行为就应该与编写JS文件时完全相同。
万一您没有定义文件,作为一种快速的技巧,您可以简单地声明一些var或function(请注意,这不是一个好习惯,但是,绝望的时光需要绝望的措施)。
例如,假设您有一个库声明了一个名为MySuperComplexJSLibrary
,在Typescript中,您可以声明/导出any
类型的变量。 这将允许使用该惊人库的每个属性和方法,而不会出现编译问题。
我通过创建一个新的类型定义文件修复了这个错误。 moment-with-locales.d.ts
我认为名称并不重要,它只需要具有以下定义的 d.ts:
declare module 'moment/min/moment-with-locales' {
import moment from 'moment';
export = moment;
}
据我了解,TS 会自动扫描并查找源代码中的所有 d.ts 文件,并将使用它们来搜索模块定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.