[英]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.