簡體   English   中英

Moment-with-locales 和 TypeScript

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM